【问题标题】:navigationController popToViewController not working in swift 3navigationController popToViewController 不能在 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...

标签: ios uinavigationcontroller swift3


【解决方案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)
                 }
              }
      

      【讨论】:

        猜你喜欢
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        • 2016-11-28
        • 2011-02-07
        • 1970-01-01
        • 1970-01-01
        • 2017-05-18
        • 1970-01-01
        相关资源
        最近更新 更多