连续推送视图控制器时UINavigationController
出现问题。
有关信息,我使用XCode 7.0,构建目标iOS 8,以及在Simulator 9.0上运行的应用程序。
这是用户手动点击tableview的单元格时的视图:
如上面的屏幕截图所示,导航&后退按钮的标题正常呈现。
但是当我以编程方式执行此操作时,(stack
是UIViewController
的数组):
for controller in stack {
self.mainNavController.pushViewController(controller, animated: false)
}
或使用0.0秒的延迟,如下所示:
for controller in stack {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64((0.0 * Float(NSEC_PER_SEC)))), dispatch_get_main_queue(), {
self.mainNavController.pushViewController(controller, animated: false)
})
}
它会显示最终结果(左边是没有延迟,右边是延迟):
请注意左侧屏幕截图中缺少的导航标题(没有延迟)和右侧屏幕截图中缺少后退按钮标题(带延迟)。
这个问题困扰了我好几天。知道为什么会这样吗?有谁知道如何解决这一问题?或者至少,解决这个问题?
提前致谢。
答案 0 :(得分:1)
这是我过去所做的。您可能会觉得它很有帮助:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let myBackButton = UIBarButtonItem()
myBackButton.title = "This is my back button"
navigationItem.backBarButtonItem = myBackButton
}
答案 1 :(得分:1)
发生这种情况是因为中间视图控制器没有被告知加载,因此它无法正确加载内容,例如后退按钮的正确消息传递。对于任何中间视图控制器,调用 loadViewIfNeeded() 然后上层视图控制器可以从它们那里获取所有需要的信息。