UINavigationController 没有在 iPad 上弹出 UINavigationBar 项目

Posted

技术标签:

【中文标题】UINavigationController 没有在 iPad 上弹出 UINavigationBar 项目【英文标题】:UINavigationController not popping UINavigationBar items on iPad 【发布时间】:2010-07-06 20:55:31 【问题描述】:

UINavigationController 有一个非常奇怪的问题。 我在这里发现了一个非常相似的问题:UINavigationController not popping UINavigationBar items

但那里的解决方案与该人已将类别添加到 NSMutableArray 的事实有关,而我没有做类似的事情。

简而言之,问题是这样的:我有一个导航控制器,我在上面推送了几个视图控制器。然后,当点击“后退”按钮时,视图控制器会弹出,但相应的导航项不会。如果我再次点击返回,则会弹出导航项。

此外,只有在使用导航控制器导航栏中的后退按钮时才会发生这种情况。如果我显式调用 popViewController(例如按下按钮),它会按预期工作。

这只发生在我运行 OS 3.2 的 iPad 上,而不是运行 OS 3.0 的 iPod Touch 或模拟器上。

我一直在尝试将问题与我的应用程序的其余部分隔离在一个单独的项目中,以便我可以对其进行试验,但我无法让它重现,尽管它在特定视图上 100% 发生在我的应用中。

我知道这些信息不足以获得具体答案,但我只是想知道是否有人听说过导航控制器没有按预期弹出导航项,这样我就可以知道在哪里进行调查下一个。

这是我用来推送视图控制器的代码示例,它非常简单,我并不想用它做任何特别的事情:

// pushing a view controller from a button press (set up with interface builder)
- (IBAction) tappedExtras

    ExtrasViewController *controller = [[ExtrasViewController alloc] initWithNibName:@"ExtrasViewController" bundle:nil];

    [self.navigationController pushViewController:controller animated:YES];

    [controller release];

注意:在该示例中,我使用了一个名为 ExtrasViewController 的自定义视图控制器类,但我尝试过的任何类型的视图控制器都会出现问题。

这里有一段代码用于显式弹出视图控制器,也由界面生成器设置的按钮按下触发:

- (IBAction) cancelChanges

    userCancelled = YES;
    [self.navigationController popViewControllerAnimated:YES];

这工作得很好(显式弹出视图控制器),但是在完全相同的视图控制器上,如果不是点击使用界面生成器设置的按钮,而是点击导航栏上的后退按钮,导航项不会正确弹出。

【问题讨论】:

【参考方案1】:

在弹出第三级推送视图控制器后,我遇到了同样的导航问题。 该问题仅在 iPad 上横向出现。 iPhone (3.1.3 & 4.0) 上没有问题。当然,在模拟器上就可以了。

【讨论】:

我只在横向模式下使用 ipad,所以我没有意识到这是相关的。在我的搜索中包括“风景”我在这里找到了两个已回答的问题:***.com/questions/2770477/…***.com/questions/2694613/…我现在没有我的 iPad 来测试它,但这看起来很有希望。感谢您指出正确的方向。一旦我可以在 iPad 上进行测试并使其正常工作,我将接受您的回答。 是的,我上面提到的这两个问题的答案是有效的。解决方案是确保您拥有的每个视图控制器都从 shouldAutorotate... 方法返回相同的值。再次感谢。 我的视图控制器没有覆盖 shouldAutorotateToInterfaceOrientation。谢谢各位。

以上是关于UINavigationController 没有在 iPad 上弹出 UINavigationBar 项目的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 没有导航栏?

如果 UINavigationController 在第一个故事板中,有没有办法在第二个故事板中显示 UINavigationController?

UIViewController 呈现 UINavigationController - 没有导航栏?

UINavigationController 没有推送/显示视图

UINavigationController 没有正确推送

TableView 没有响应 UINavigationController 中的“编辑”按钮