Unwind Segue

296 阅读1分钟

环境:Xcode13, iOS15, Swift5

image.png

使用Stroyboard开发的同学对上面的截图很熟悉,在viewControllerA上的按钮打开新的界面viewControllerB,点击viewControllerB上按钮回到viewControllerA,并且viewControllerB会传回一个值到viewControllerA,这是iOS开发中最常见的一个场景。

viewControllerBviewControllerA传值有几种方式,下面的介绍的方式借助Storyboardunwind segue

实现unwind segue需要四个步骤:

步骤1: 在viewControllerA添加如下方法:

    @IBAction func secondViewControllerDidSomething(_ segue: UIStoryboardSegue) {

        let controller = segue.source as! SecondViewController

        print(controller.name)

    }

步骤2: 在Storyboard中选中viewControllerB,将按钮链接到顶部最右边的Exit上,在弹窗的选择框中选中上面定义的方法

image.png

步骤3: 在Storyboard中选中Unwind segue,在identifier中填入一个字符串。

image.png

步骤4: 实现viewControllerB中的该方法,改变name的值。

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        if segue.identifier == "Unwindsegue" {

            name = "张三"

        }

    }

运行app,点击viewControllerA中的按钮打开viewControllerB,点击viewControllerB中的按钮退出viewControllerB,控制台打印如下:

image.png

你也可大断点查看方法调用过程。

借助Unwind segue,viewControllerA可以从viewControllerB获得想要的值,以此达到反向传值的目的。