ios - 使用 UINavigationController 推送两个 View 后后退按钮消失

标签 ios xcode uinavigationcontroller push back

我目前正在使用 UINavigationController 开发应用程序。我将 Root View Controller 设置为 ViewController1,然后推送 ViewController2,然后推送 ViewController3 以响应按钮单击事件。

如果我随后单击 View 3 中的后退按钮,我将返回到 View 2,但此 View 没有后退按钮。同样有趣的是,在为每个 View (分别为“ View 1”、“ View 2”和“ View 3”)设置标题后,如果我使用后退按钮从 View 3 导航回 View 2,标题将变为 ' View 1' 即初始 View ( View 1)的标题 - 而不是 View 2 的标题。

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

非常感谢!

编辑:我使用以下代码在应用程序委托(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;

我稍后在按钮点击时将 View Controller 推送到 UINavigationController,如下所示:

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

最佳答案

我找到了解决方案 - 在 vi​​ewController2 和 viewController3 中,我有以下代码来隐藏导航栏(我希望导航栏隐藏在 view1 上,然后在 View 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];
}

然后从 View Controller 2 和 3 中删除之前的代码。这解决了问题。

关于ios - 使用 UINavigationController 推送两个 View 后后退按钮消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569570/

相关文章:

ios - Xcode 6.0.1 - iOS 模拟器黑屏

字符常量对于它的类型来说太长

ios - 将 UIView 添加到 UITableViewCell 没有显示任何内容

cocoa - UINavigationController 内的 UITabBar 使用 Storyboard

ios - Swift:计算属性的默认初始化器

ios - 我如何获得 iOS 的 p12 key ,以便我可以在我的 Iphone 上安装我的应用程序来测试它?

iphone - 拍摄完图像后,UIActivityIndi​​catorView没有显示在“相机”叠加 View 上

ios - 尝试设置自定义 backBarButtonItem 图像/难以调整大小的图像

ios - 导航 Controller 中不允许使用 UINavigationControllers

ios - 在导航 Controller 中堆叠 UIImagePickerController?