从以编程方式使用的viewController弹回到根ViewController

时间:2017-02-26 06:21:53

标签: ios swift uiviewcontroller uinavigationcontroller pop

我有一个导航控制器,以编程方式显示视图控制器。现在我想回到导航控制器的根视图控制器,如果有错误,但我似乎无法回到那里。

我正在与之合作的页面如下:

let vc = self.storyboard!.instantiateViewController(withIdentifier: page)
self.show(vc, sender: self)

如果我尝试回去:

self.navigationController?.popViewController(animated: true)

我粗暴地发出警告:

  

表达式类型UIViewController未使用

我不想在这里使用segues ......

2 个答案:

答案 0 :(得分:1)

self。为避免警告使用:

_ = self.navigationController?.popViewController(animated: true)

要弹回到根视图控制器使用: -

if let self.navigationController = self.window?.rootViewController as? UINavigationController {
     navigationController.popToRootViewControllerAnimated(true)
}

答案 1 :(得分:0)

实际上这并不是一个糟糕的警告。编辑器指示/突出显示您没有使用从导航堆栈弹出的视图控制器。如果您不想使用弹出视图控制器

,则可以忽略它们

以下是导航控制器提供弹出操作的一些方法(功能)。他们从弹出的导航堆栈返回可选的UIViewController(intance)。

    open func popViewController(animated: Bool) -> UIViewController? // Returns the popped controller.

    open func popToViewController(_ viewController: UIViewController, animated: Bool) -> [UIViewController]? // Pops view controllers until the one specified is on top. Returns the popped controllers.

    open func popToRootViewController(animated: Bool) -> [UIViewController]?

以下是示例代码,如何使用它:

if let navigation = self.window?.rootViewController as? UINavigationController {
     navigation.popToRootViewControllerAnimated(true)
}