Swift - 如何从 NavigationController 中删除视图控制器?
Posted
技术标签:
【中文标题】Swift - 如何从 NavigationController 中删除视图控制器?【英文标题】:Swift - How to remove a viewcontroller from NavigationController? 【发布时间】:2016-11-30 05:53:43 【问题描述】:我有 4 个 ViewController 连接到 NavigationController。它们的顺序是 1->2->3->4。当用户按下 4 上的后退按钮时,我希望他们被重定向到 2 而不是 3。同时,我还希望用户在按下 3 上的后退按钮时被重定向到 2 。 这可能吗?提前致谢。
【问题讨论】:
使用 unwind segue,类似的答案还有很多。这里是one 如果你想快速回答,那么看看这个***.com/questions/31878108/… 使用 unwined segue ***.com/questions/12561735/… 【参考方案1】:你当然可以这样做。只需在第 4 个 ViewController 上创建左栏按钮。并在该按钮操作上弹出到第二个视图控制器
if let viewcontroller = self.navigationController?.viewControllers[1] where viewcontroller.isKindOfClass(YourController)
self.navigationController?.popToViewController(viewcontroller, animated: false)
【讨论】:
Swift3 中的小改动:如果 let viewcontroller = self.navigationController?.viewControllers[1], viewcontroller 是 YourViewController let _ = self.navigationController?.popToViewController(viewcontroller, animated: false) 跨度> 谢谢!有效。另一个问题,因为我是一个绝对的初学者:如何将其分配给后退按钮?我查看了 UIBarButtonSystemItems 列表,但似乎没有可用的后退按钮。 第四个视图控制器 viewDidload self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style:.Plain, target: self, action:#selector(self.back(_:))) 和 action func backButtonAction(sender: AnyObject) if let viewcontroller = self.navigationController?.viewControllers[1] where viewcontroller.isKindOfClass(YourController) self.navigationController?.popToViewController(viewcontroller, animated: false) 【参考方案2】:if let vc = self.viewControllerWithClass(YourVC.self)
self.popToViewController(vc, animated: true)
extension UINavigationController
func viewControllerWithClass(_ aClass: AnyClass) -> UIViewController?
for vc in self.viewControllers
if vc.isMember(of: aClass)
return vc
return nil
【讨论】:
【参考方案3】:您可以在导航堆栈中检查控制器。
let controllers = navigationController!.viewControllers.reverse()
for controller in controllers
if controller.isKindOfClass(YourController)
self.navigationController?.popToViewController(controller, animated: true)
return
【讨论】:
以上是关于Swift - 如何从 NavigationController 中删除视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章