导航控制器的后退按钮不起作用!

时间:2010-03-28 01:03:53

标签: iphone objective-c

出于某种原因,如果我尝试使用左上角的后退按钮返回主菜单,则只有标题返回上一个菜单,而不是视图控制器。只有当我使用其他按钮显式调用popViewControllerAnimated时,视图控制器才会返回上一个菜单。

无论如何要解决这个问题?我想我编错了。尝试谷歌搜索,但找不到像我这样的任何案件。

2 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题。这是我的代码:

- (IBAction) showGameView:(id) sender {
    gameView = [[TCGameViewController alloc] initWithNibName:@"TCGameViewController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:gameView animated:YES];
    [gameView release];
}

当我完成gameView时,我会这样做:

[self.navigationController setNavigationBarHidden:NO animated:YES];

但是当我按下“后退”按钮时所做的一切都是在导航栏中循环,但从不弹出视图。我甚至不知道如何调试它。

在我的另一个视图中,“infoView”我调用的代码与之前相同,只是NavBar永远不会被隐藏,但它的工作正常。

帮助!

答案 1 :(得分:0)

在自定义视图控制器中覆盖以下方法时,可能会发生此问题:

- (UINavigationItem*)navigationItem

但是您没有为返回的 UINavigationItem leftBarButtonItem 属性指定 UIBarButtonItem

如果您使用自定义navigationItem,并且想要标准的后退按钮功能,您可以添加如下方法(请记住,每个UIViewController都有对包含它的 navigationController 的引用):

- (void)backButtonTapped
{
    [self.navigationController popViewControllerAnimated:YES];
}

然后按如下方式设置自定义navigationItem的一部分:

- (UINavigationItem*)navigationItem
{
    UIBarButtonItem* newLeftBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
                                                                         style:UIBarButtonItemStyleBordered
                                                                        target:self
                                                                        action:@selector(backButtonTapped)];

    UINavigationItem* navigationItem = [[[UINavigationItem alloc] init] autorelease];

希望这有帮助。