- RootViewController - 左侧窗格中的视图控制器。
- DetailViewController - 右侧窗格中的视图控制器。
所有功能在横屏模式下都运作良好。然而,在纵向模式下,我无法使UISplitViewController按我想要的方式工作,也就是说,当我在纵向模式下启动和使用应用程序时,RootViewController的弹出按钮在我的DetailViewController中没有适当地显示。
[detailViewController setViewControllers:[NSArray arrayWithObjects:newViewController, nil] animated:animated];
//detailPane是我的DetailViewController
当我在纵向模式下启动应用程序时,弹出按钮会适当地显示。但是,当我在弹出窗口中点击一个项目并设置了一个新的视图控制器后,按钮消失了。我必须将设备旋转到横向模式,然后再次旋转到纵向模式才能使按钮再次出现。
我在我的应用程序AppDelegate中设置了UISplitViewController的代理,如下所示:
以下是我的UISplitViewControllerDelegate实现:
self.splitViewController.delegate = self.detailViewController
- (void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {
NSLog(@"Will hide view controller");
barButtonItem.title = @"Menu";
[self.navigationItem setLeftBarButtonItem:barButtonItem];
self.popoverController = pc;
}
- (void)splitViewController: (UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
NSLog(@"Will show view controller")
NSMutableArray *items = [self.navigationItem.leftBarButtonItems mutableCopy];
[items removeAllObjects];
[self.navigationItem setLeftBarButtonItems:items animated:YES];
[items release];
self.popoverController = nil;
}
任何提示或帮助都将不胜感激。 谢谢。