使用UINavigationController推送两个视图后,后退按钮消失

时间:2012-03-05 15:46:43

标签: ios xcode uinavigationcontroller push back

我目前正在使用UINavigationController开发一款应用。我将根视图控制器设置为ViewController1,然后推送ViewController2,然后推送ViewController3以响应按钮单击事件。

如果我然后单击视图3中的后退按钮,我将返回到视图2,但此视图没有后退按钮。有趣的是,为每个视图设置了标题(分别为“视图1”,“视图2”和“视图3”),如果我使用后退按钮从视图3导航回视图2,则标题将变为'查看1'即初始视图的标题(视图1) - 不是视图2的标题。

如果有人知道这里会发生什么,我们非常感谢您的建议。

非常感谢提前!

编辑:我使用以下代码在app delegate中初始化UINavigationController:

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen] bounds]];
self.viewController1 = [[ViewController1 alloc] init];
self.viewController2 = [[ViewController2 alloc] init];
self.viewController3 = [[ViewController3 alloc] init];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController1];
self.window.rootViewController = self.navigationController;

我稍后按钮点击将视图控制器推送到UINavigationController,如下所示:

MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
[self.navigationController pushViewController:appDelegate.viewController2 animated:YES];

1 个答案:

答案 0 :(得分:1)

我找到了解决方案 - 在viewController2和viewController3中我有以下代码以隐藏导航栏(我希望导航栏隐藏在view1上,然后在视图2和3上可见)。

- (void) viewWillAppear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:NO animated:animated];
    [super viewWillAppear:animated];
}

- (void) viewWillDisappear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:YES animated:animated];
    [super viewWillDisappear:animated];
}

我意识到在viewController1中做反向更有意义,即

- (void) viewWillAppear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:YES animated:animated];
    [super viewWillAppear:animated];
}

- (void) viewWillDisappear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:NO animated:animated];
    [super viewWillDisappear:animated];
}

然后从视图控制器2和3中删除以前的代码。这解决了这个问题。