【问题标题】:Swift & Navigation : How do I replace a ViewController and also send some parameters?Swift & Navigation:如何替换 ViewController 并发送一些参数?
【发布时间】:2021-12-07 01:48:13
【问题描述】:

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

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

执行转场

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

准备转场

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

【问题讨论】:

    标签: ios swift uiviewcontroller navigation storyboard


    【解决方案1】:

    如果你有一个导航控制器作为你的应用窗口根目录,那么你可以管理所有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

    【讨论】:

    • 那我可以用Prepare Segue传递parameters?能给我一个完整的代码吗?
    • 以上两种方式是当您需要进行更改时,它没有 segue 只是对呈现的 vcs 的管理,无论是弹出/推送或获取顶部并更改它,不要将此与显示混淆vc
    • 我是 iOS 开发新手。能给我完整的代码吗?
    • @PunreachRany 如果有帮助,您可能会接受答案
    • 看来我已经更换了屏幕。但是与 ViewController 关联的情节提要 UI 没有显示出来。换句话说,它显示了一个黑屏
    猜你喜欢
    • 2019-07-04
    • 2021-12-07
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2019-08-12
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多