【问题标题】:iOS Swift popToViewController by NameiOS Swift popToViewController 按名称
【发布时间】:2015-08-07 12:47:25
【问题描述】:

我正在尝试弹出一个视图控制器,我认为它位于索引 0。我的视图控制器名称是 HomeVC。

 self.navigationController!.popToViewController(self.navigationController!.viewControllers[0] as! UIViewController, animated: true)

但是,上面的代码只会让我回到最近的视图控制器。不知道为什么它不去我的 HomeVC 视图控制器。他们是我可以使用 ViewController Name 弹出到它的一种方式吗?

【问题讨论】:

标签: ios swift uiviewcontroller


【解决方案1】:

试试这个:

for (var i = 0; i < self.navigationController?.viewControllers.count; i++) {
    if(self.navigationController?.viewControllers[i].isKindOfClass(YourDesiredViewController) == true) {
           self.navigationController?.popToViewController(self.navigationController!.viewControllers[i] as! DestinationViewController, animated: true)   
           break;
    }
}

【讨论】:

    【解决方案2】:

    您可以使用popToRootViewControllerAnimated 弹出索引为零的视图控制器。

    它返回一个弹出的视图控制器数组,这可能有助于您调试问题。

    【讨论】:

    • 我使用了 popToRoot,它让我回到了我最近的视图控制器。他们是我可以指定视图控制器名称的一种方式吗?
    【解决方案3】:

    添加以下UINavigationController 扩展名

    extension UINavigationController {
    
        func popToClass<T: UIViewController>(type: T.Type) -> Bool {
            for viewController in self.viewControllers {
                guard let _ = viewController as? T else { continue }
                self.popToViewController(viewController, animated: true)
                return true
            }
            return false
        }
    
    }
    

    如下使用

    let success = navigationController.popToClass(MyVC.self)
    

    【讨论】:

      【解决方案4】:
          for viewController in (self.navigationController?.viewControllers)! {
              if(viewController is YourViewController) {
                  self.navigationController?.popToViewController(viewController, animated: true)
                  break;
              }
          }
      

      我是这样解决的。

      【讨论】:

        猜你喜欢
        • 2015-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多