以编程方式返回到Swift中以前的ViewController
我通过单击button将用户转到一个页面。 这个页面是一个UITableViewController 。
现在,如果用户点击一个单元格,我想推他回到前一页。
我想过像self.performSegue("back")....
这样的东西,但这似乎是一个坏主意。
什么是正确的方法来做到这一点?
Swift 3:
如果你想回到以前的视图控制器
_ = navigationController?.popViewController(animated: true)
如果你想回到根视图控制器
_ = navigationController?.popToRootViewController(animated: true)
Swift 3 , Swift 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) }