环境:Xcode13, iOS15, Swift5
使用Stroyboard开发的同学对上面的截图很熟悉,在viewControllerA上的按钮打开新的界面viewControllerB,点击viewControllerB上按钮回到viewControllerA,并且viewControllerB会传回一个值到viewControllerA,这是iOS开发中最常见的一个场景。
viewControllerB向viewControllerA传值有几种方式,下面的介绍的方式借助Storyboard的unwind segue。
实现unwind segue需要四个步骤:
步骤1: 在viewControllerA添加如下方法:
@IBAction func secondViewControllerDidSomething(_ segue: UIStoryboardSegue) {
let controller = segue.source as! SecondViewController
print(controller.name)
}
步骤2: 在Storyboard中选中viewControllerB,将按钮链接到顶部最右边的Exit上,在弹窗的选择框中选中上面定义的方法
步骤3: 在Storyboard中选中Unwind segue,在identifier中填入一个字符串。
步骤4: 实现viewControllerB中的该方法,改变name的值。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Unwindsegue" {
name = "张三"
}
}
运行app,点击viewControllerA中的按钮打开viewControllerB,点击viewControllerB中的按钮退出viewControllerB,控制台打印如下:
你也可大断点查看方法调用过程。
借助Unwind segue,viewControllerA可以从viewControllerB获得想要的值,以此达到反向传值的目的。