我正在开发 UINavigationController 驱动的 iPad 应用程序(在模拟器中测试)。导航控制器堆栈上只有两个 UIViewController。为了演示,我们将它们称为“SetupController”和“ContentController”。 SetupController 将 ContentController 压入堆栈
[self.navigationController pushViewController:contentController animated:YES];
查看内容时,您可以按后退按钮返回设置控制器。如果应用程序处于纵向模式,则一切正常。
然而,当应用程序处于横向状态并且我按下后退按钮时,事情就会变得混乱。视图控制器堆栈已正确更新(例如,我看到了 SetupController 的视图),但 UINavigationBar 未正确更新。与 ContentController 关联的 UINavigation 栏项目仍会显示。要查看 SetupCotroller 预期的 UINavigationBar 项目,我必须再次按后退按钮,此时 UINavigationBar 会动画到正确的状态。同样,这只发生在横向模式下,纵向模式下效果很好。
作为一个测试。在 [SetupController viewDidAppear:] 方法中,我添加了以下调试输出
if(self.navigationController.navigationBar.topItem != self.navigationItem) {
NSLog(@"wrong nav item!");
} else {
NSLog(@"correct nav item!");
}
每当模拟器处于横向模式时,我都会收到“错误”消息,而当模拟器处于纵向模式时,我不会收到“错误”消息。我尝试从 ViewController 以及我正在修改其导航项或导航栏本身的任何实例中删除所有 viewDidAppear: 消息。
有什么想法吗?我假设我在这里做错了什么,但这对我来说确实感觉像是一个错误。
我遇到了同样的问题。这很奇怪,但您需要确保堆栈中的所有视图控制器都实现了以下功能(即使所有内容都正确旋转显示):
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
返回是;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)