UINavigationController不会在iPad上弹出UINavigationBar项目

时间:2010-07-06 20:55:32

标签: iphone cocoa-touch ipad uinavigationcontroller uinavigationitem

我对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 个答案:

答案 0 :(得分:1)

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