Swift & 导航:如何替换 ViewController 并发送一些参数?

Swift & Navigation : How do I replace a ViewController and also send some parameters?

如何替换 ViewController 并发送一些参数?

使用下面的代码,我只能将另一个 ViewController 推入我当前的导航堆栈。 我们可以立即弹出并推送另一个吗?还是有一个官员可以永久更换?请给我看看。谢谢。

执行 Segue

performSegue(withIdentifier: "ToNewViewController", sender: self)

准备 Segue

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let destinationVC = segue.destination as! NewViewController
        destinationVC.params = params
    }

如果您有一个导航控制器作为您的应用 window root ,那么您可以管理所有 viewControllers

var vcs = self.navigationController!.viewControllers // get all vcs
vcs = vcs.dropLast() // remove last vc
let vc = // create new VC
vcs.append(vc) // append it

然后改变那个数组并像这样重新设置它

self.navigationController!.setViewControllers(vcs,animated:true)

您可以使用 this 获取顶部呈现 vc ,然后向该 vc 添加一个方法来执行数据替换和刷新 UI