我目前正在使用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];
答案 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中删除以前的代码。这解决了这个问题。