开发者

Back button of Navigation Controller does not work!

For some reason, if I tr开发者_运维百科y to go back to the main menu using the back button on the upper left corner, only the title returns to the previous menu, but not the view controller. View controller would return to the previous menu only if I explicitly call popViewControllerAnimated using some other button.

Is there anyway to solve this? I think I've coded something wrong. Tried googling but couldn't find any cases like mine.


I'm getting the exact same problem. Here is my code:

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

And when I am done with gameView, I do this:

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

But all it does when I push the 'back' button is cycle through the navigation bar, but never pops the view. I don't even know how to debug it.

In my other view, "infoView" I call the same code as before except the NavBar is never hidden, but it works just fine.

helps!


This problem can occur when you override the following method in your custom view controller:

- (UINavigationItem*)navigationItem

But you don't specify a UIBarButtonItem for the leftBarButtonItem property of the returned UINavigationItem.

If you use a custom navigationItem, and want the standard back button functionality, you could add a method as follows (remember that every UIViewController has a reference to the navigationController that containts it):

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

And then setup part of the custom navigationItem as follows:

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

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

Hope this helps.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜