https://i.stack.imgur.com/ayMVR.png
对不起,我是初学者,我担心如果以后我做错了,我会做些奇怪的事。
如果我有3个视图控制器,如上图所示,并且在第3个视图控制器中,我有一个警报,在按下警报后将我发送回第一个视图控制器,如下面的代码:
class ViewController3: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let alert = UIAlertController(title: "Great", message: "lets get back to VC1", preferredStyle: .alert)
let alertAction1 = UIAlertAction(title: "back", style: .default) { (action) in
self.navigationController?.popToRootViewController(animated: true)
}
alert.addAction(alertAction1)
present(alert, animated: true, completion: nil)
}
}
通过使用
,有两种方法可以回到第一个视图控制器1. self.navigationController?.popToRootViewController(animated: true)
或使用2. perform segue with identifier
,返回第一个视图控制器的正确方法是什么?第一个还是第二个?为什么?
答案 0 :(得分:1)
这是正确的方法
1. self.navigationController?.popToRootViewController(animated: true)
segue将使它们全部保持在堆栈
答案 1 :(得分:1)
最好的方法是
1. self.navigationController?.popToRootViewController(animated: true)
还要检查this,因为你会明白为什么它更好(清晰的导航堆栈)