navigationController popToViewController 不能在 swift 3 中工作

Posted

技术标签:

【中文标题】navigationController popToViewController 不能在 swift 3 中工作【英文标题】:navigationController popToViewController not working in swift 3 【发布时间】:2016-11-19 13:10:39 【问题描述】:

我想在 swift 3.0 中使用 popToViewControllernavigationController。 为此,我在下面编写了代码,但没有按预期工作。

let controllers = self.navigationController?.viewControllers
for vc in controllers! 
    if vc is HomeViewController 
        self.navigationController?.popToViewController(vc, animated: true)
    

我也写了下面的代码,但这也有效。

for vc in controllers! 
    if vc.isKind(of:HomeViewController.self) 
        self.navigationController?.popToViewController(vc, animated: true)
    

请帮我解决这个问题。

【问题讨论】:

您是否检查过 HomeViewController 确实在控制器中?尝试添加断点以查看循环的每次迭代中的视图控制器。 是的,HomeViewController 没有直接在层次结构中。实际上 HomeViewController 已集成在 SlideMenu 中,所以我需要弹出到 SlideMenu... 【参考方案1】:

试试这是popToViewController的代码

斯威夫特 3.0

  let controllers = self.navigationController?.viewControllers
      for vc in controllers! 
        if vc is HomeViewController 
          _ = self.navigationController?.popToViewController(vc as! HomeViewController, animated: true)
        
     

【讨论】:

【参考方案2】:

斯威夫特 3.1

如果您是 UINavigationController 的扩展,请确保使用 self.popToViewController 而不是 self.navigationController.popToViewController

extension UINavigationController 
    func popToViewController<T: UIViewController>(withType type: T.Type) 
         for viewController in self.viewControllers 
             if viewController is T 
               self.popToViewController(viewController, animated: true)
              return
         
      
   

【讨论】:

【参考方案3】:

试试这是你的 popToViewController 代码

更新 Swift 4.2

let controllers = self.navigationController?.viewControllers
         for vc in controllers! 
           if vc is ListViewController 
             _ = self.navigationController?.popToViewController(vc as! ListViewController, animated: true)
           
        

【讨论】:

以上是关于navigationController popToViewController 不能在 swift 3 中工作的主要内容,如果未能解决你的问题,请参考以下文章

lvs+keepalived

LVS+keepalived 实战

Windows DOS命令 bat批处理脚本交互操作

Windows DOS命令 bat批处理脚本交互操作

通过 NavigationController-TabBarController-NavigationController 以编程方式导航

采用intel编译器并行编译执行杂化函数计算CP2K