iOS如何简单地返回到以前提出/推视图控制器编程?

如何以编程方式返回到以前的视图控制器? 我find了这个答案 ,但是有一个例子说明了如果我们有导航堆栈,如何返回:

navigationController?.popViewControllerAnimated(true) 

如果我的控制器队列是基于导航控制器的,那也没关系。 但是通常情况下,我们使用storyboard来指定标有关键字Show的 segue,这意味着我们不关心导航推送或呈现新的视图控制器。 所以在这种情况下,我认为只有select解放视图控制器通过segue,但也许有一些简单的调用,我可以做回到我的以前的视图控制器没有检查如果我的堆栈视图控制器包含UINavigationController

我正在寻找像self.performSegueToReturnBack简单的东西。

您可以通过扩展轻松扩展任何内置类或任何其他类的function。 这是swift扩展的完美用例。

你可以像这样扩展UIViewController,并在任何UIViewController中使用performSegueToReturnBack函数

Swift 2.0

 extension UIViewController { func performSegueToReturnBack() { if let nav = self.navigationController { nav.popViewControllerAnimated(true) } else { self.dismissViewControllerAnimated(true, completion: nil) } } } 

Swift 3.0

 extension UIViewController { func performSegueToReturnBack() { if let nav = self.navigationController { nav.popViewController(animated: true) } else { self.dismiss(animated: true, completion: nil) } } } 

注意:

有人build议,我们应该将_ = nav.popViewControllerAnimated(true)一个未命名的variables,因为编译器会抱怨我们使用它而不分配任何东西。 但是我没有发现。

最佳答案是这样的:_ = navigationController?.popViewController(animated:true)

采取从这里: https : //stackoverflow.com/a/28761084/2173368