1

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];
}

这非常有效(显式弹出视图控制器),但是在完全相同的视图控制器上,如果不是点击使用界面构建器设置的按钮,而是点击导航栏上的后退按钮,则导航项不会正确弹出。

4

1 回答 1

1

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

于 2010-07-07T08:27:49.677 回答