Objective c UINavigationBar未在';背面';风景画
我正在开发一个由UINavigationController驱动的iPad应用程序(在模拟器中进行测试)。导航控制器堆栈上只有两个UIViewController。为了演示,让我们将它们称为SetupController和ContentController。SetupController在堆栈上使用Objective c UINavigationBar未在';背面';风景画,objective-c,iphone,ipad,uinavigationcontroller,Objective C,Iphone,Ipad,Uinavigationcontroller,我正在开发一个由UINavigationController驱动的iPad应用程序(在模拟器中进行测试)。导航控制器堆栈上只有两个UIViewController。为了演示,让我们将它们称为SetupController和ContentController。SetupController在堆栈上使用 [self.navigationController pushViewController:contentController animated:YES]; 查看内容时,您可以按后退按钮返回到设置
[self.navigationController pushViewController:contentController animated:YES];
查看内容时,您可以按后退按钮返回到设置控制器。如果应用程序处于纵向模式,则一切正常
然而,当应用程序处于横向时,我按了后退按钮,事情就乱了套。视图控制器堆栈已正确更新(例如,我看到SetupController的视图),但UINavigationBar未正确更新。与ContentController关联的UINavigation栏项目仍将显示。要查看SetupCotroller预期的UINavigationBar项目,我必须再次按下back按钮,此时UINavigationBar将动画设置为正确的状态。同样,这只发生在横向模式下,纵向模式工作完美
作为测试。在[SetupController ViewDidDisplay:]方法中,我添加了以下调试输出
if(self.navigationController.navigationBar.topItem != self.navigationItem) {
NSLog(@"wrong nav item!");
} else {
NSLog(@"correct nav item!");
}
每当模拟器处于横向模式时,我都会收到“错误”的消息,而在纵向模式时,则不会收到。我已尝试从ViewController和任何我正在修改其导航项或导航栏本身的实例中删除所有ViewDidDisplay:消息
有什么想法吗?我假设我在这里做错了什么,但这对我来说确实是个错误。我遇到了同样的问题。这很奇怪,但您需要确保堆栈中的所有视图控制器都实现了以下功能(即使所有内容都正确显示):
- (布尔)应自动旋转指针面定向:(UIInterfaceOrientation)interfaceOrientation{ 返回YES; }