问题
所以,我发现(如果你看到我之前的问题,你很熟悉),我需要实现一个导航控制器堆栈。因此,为了将这些视图推送到我的导航堆栈,我替换了一些我的segue来推送segues。不幸的是,在下图中看到的第三个视图中,我正在尝试使用弹出功能返回上一个视图。到目前为止,我已经使用推荐的代码来实现这一目标,但无济于事。我希望你们能发现我不能发现的东西!
守则
下面是第三个视图上后退按钮的动作功能(遗憾的是,屏幕截图中有些东西搞砸了,但请确保有一个白色箭头后退按钮)。
@IBAction func back(_ sender: AnyObject) {
if let navController = self.navigationController {
navController.popViewController(animated: true)
}
答案 0 :(得分:2)
首先,看起来您的NavigationController不是您的初始视图控制器。箭头指向中间的那个,而不是我想象中的那个。
关于您的跟进问题,删除顶部的导航栏很容易。
只需将其添加到您的UIViewControllers:
override func viewWillAppear(animated: Bool) {
self.navigationController?.navigationBar.hidden = true
}
据我所知,你必须为堆栈中的每个UIViewController删除它。
另一件事。您的代码"返回"可以简化:
@IBAction func back(sender: AnyObject) {
self.navigationController?.popViewControllerAnimated(true)
}
在Swift 3中:
@IBAction func gobackTapped(sender: AnyObject) {
_ = self.navigationController?.popViewController(animated: true)
}
语法很愚蠢,但现在就是这样。我认为在某些时候popViewController
会被标记为@discardableResult