一个奇怪的问题只出现在iOS 6.0上。在基于UISplitViewController的应用的iPad纵向模式中,主视图是基于导航控制器的。主视图的第一个视图控制器显示了工具栏按钮,如果我按下第二个视图控制器并隐藏工具栏,那么在弹出第二个视图控制器后,第一个视图控制器的工具栏上的按钮将永远消失。(即显示一个空白工具栏)。工具栏按钮在第一个视图控制器的viewDidLoad中初始化。并且通过在第二个视图控制器的viewDidLoad中调用self.navigationController setToolbarHidden:YES来隐藏工具栏,并且通过在第一个视图控制器的viewDidLoad中调用self.navigationController setToolbarHidden:NO来再次显示工具栏。
有什么建议吗?在导航控制器中隐藏/取消隐藏工具栏的正确方法是什么?
顺便说一句,它在iOS 4.3、5.1.1和iPad上的iOS 6.0横向模式上都很好。此问题仅在iPad中的iOS 6.0纵向模式下出现。
编辑:在iPhone,iOS6.0上,同样的问题。但是,使用iOS 6.0时,iPad的横向模式很好。
发布于 2012-09-23 10:21:46
因为这个问题也会出现在安装了iOS 6.0的iPhone上,所以它可能与UISplitView纵向模式无关(尽管UISplitView横向模式也可以)。
所以我把重点放在了UINavigationController的工具栏显示/隐藏上,这个线程(Toolbar in Navigation Controller)解决了我的问题。
我删除了viewDiDLoad和viewWillAppear中的setToolBarHidden代码,并实现了UINavigationController委托协议:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
BOOL shouldHide = [viewController.toolbarItems count] == 0;
[navigationController setToolbarHidden:shouldHide animated:animated];
}现在它起作用了。然而,我仍然不明白为什么原始代码不能在iPhone和iPad纵向模式下的iOS 6.0中工作。
https://stackoverflow.com/questions/12544605
复制相似问题