以编程方式返回到Swift中以前的ViewController

我通过单击button将用户转到一个页面。 这个页面是一个UITableViewController

现在,如果用户点击一个单元格,我想推他回到前一页。

我想过像self.performSegue("back")....这样的东西,但这似乎是一个坏主意。

什么是正确的方法来做到这一点?

Swift 3:

如果你想回到以前的视图控制器

 _ = navigationController?.popViewController(animated: true) 

如果你想回到根视图控制器

 _ = navigationController?.popToRootViewController(animated: true) 

Swift 3Swift 4

 if movetoroot { navigationController?.popToRootViewController(animated: true) } else { navigationController?.popViewController(animated: true) } 

Swift 3

我可能迟到了,但是你可以这样做:

 override func viewDidLoad() { super.viewDidLoad() navigationItem.leftBarButtonItem = UIBarButtonItem(title: "< Back", style: .plain, target: self, action: #selector(backAction)) // Do any additional setup if required. } func backAction(){ //print("Back Button Clicked") dismiss(animated: true, completion: nil) } 

如果塞格是“显示”或“推”的types,那么你可以在UINavigationController的实例上调用“popViewController(animated:Bool)”。 或者,如果segue是一种“存在”,那么调用“dismiss(animated:Bool,completion:(() – > Void)?)”用UIViewController的实例

对于swift 3,你只需要编写下面这行代码

 _ = navigationController?.popViewController(animated: true) 

通过在导航控制器的“viewDidDisappear”中编写代码,我可以redirect到根页面,

override func viewDidDisappear(_ animated: Bool) { self.navigationController?.popToRootViewController(animated: true) }