在纵向模式下切换到视图时,willHide ViewController未被调用

时间:2011-12-09 14:32:30

标签: objective-c ios ipad uisplitviewcontroller

我的iPad应用使用标准的UISplitViewController。我的问题是,如果我

  • 旋转到肖像,我为主列表添加了一个弹出按钮 - 精细
  • 通过弹出窗口选择一项更改详细信息视图的项目(使用prepareForSegue设置self.splitViewController.delegate = newViewDetailViewController;
  • 生成的详细视图现在缺少一个popoverbutton。如果我旋转到横向,则会显示主列表。如果我再次旋转为肖像,则会出现一个popoverbutton。

那么 - 我如何确保在willHideViewController上调用viewDidLoad? 我可以检测到方向是什么,但我仍然需要

中所需的barbuttonitem和popovercontroller

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController

现在我按照建议here跟踪Apples MultipleDetailView示例。

但是因为我也有多个MasterControllers,所以每次在我的masterview控制器上按下一个级别时,存储(一个静态)指针到popoverbutton项并设置它是一件非常麻烦的事。

希望有人能够很好地解决这个问题: - )

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,最终弄明白了什么。 AppDelegate中有一些代码可以执行一些初始化。它位于didFinishLaunchingWithOptions方法中。这是代码:

UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;

它们对于操作分割视图控制器都很重要,但最后一行是获取方法的最后一行是最后一行。我正在构建一个通用的应用程序,但这是缺失的。为确保它不会影响我的iPhone端,我将其包装在UI_USER_INTERFACE_IDIOM检查中。