什么是回到导航控制器堆栈顶视图控制器的正确方法?

时间:2018-02-16 14:21:55

标签: ios swift

enter image description here 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,返回第一个视图控制器的正确方法是什么?第一个还是第二个?为什么?

2 个答案:

答案 0 :(得分:1)

这是正确的方法

1. self.navigationController?.popToRootViewController(animated: true)

segue将使它们全部保持在堆栈

答案 1 :(得分:1)

最好的方法是

  1. self.navigationController?.popToRootViewController(animated: true)

还要检查this,因为你会明白为什么它更好(清晰的导航堆栈)