环境: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
获得想要的值,以此达到反向传值的目的。