【发布时间】:2012-03-05 15:46:42
【问题描述】:
我目前正在使用 UINavigationController 开发应用程序。我将根视图控制器设置为 ViewController1,然后推送 ViewController2 和 ViewController3 以响应按钮单击事件。
如果我随后单击视图 3 中的后退按钮,我将返回到视图 2,但此视图没有后退按钮。同样有趣的是,为每个视图设置了标题(分别为“视图 1”、“视图 2”和“视图 3”),如果我使用后退按钮从视图 3 导航回视图 2,标题将变为“视图 1' 即初始视图(视图 1)的标题 - 不是视图 2 的标题。
如果有人知道这里可能发生了什么,非常感谢您的建议。
非常感谢!
编辑:我使用以下代码在应用委托中初始化 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];
【问题讨论】:
-
你能贴一些代码吗?另外,“从 3 导航到 2”是指使用后退按钮吗?还是您使用其他方法?
-
嗨 Damo - 是的,我使用后退按钮从 3 导航到 2。我编辑了我的原始帖子以包含我用于推送视图控制器的代码。谢谢。
-
那么在 viewController 对象中你是否设置了一个左侧导航栏按钮项 - 比如 - self.navigationItem.backBarButtonItem = summat?您说有一个后退按钮,但它似乎消失了 - 对吗?
-
不,我现在让 UINavigationController 处理这个。如果我从根视图控制器 (viewController1) 移动到 viewController2,那么视图 2 上会显示一个后退按钮。如果我从 viewController2 移动到 viewController3,那么视图 3 上也会显示一个后退按钮。只有当我使用后退按钮时视图 3 返回到后退按钮未显示的视图 2(在视图 2 上)。
-
出于兴趣 - 这些视图控制器的 @propertrty 声明看起来如何?他们确定保留吗? (尤其是根 - 因为那似乎是迷路了)
标签: ios xcode uinavigationcontroller push back