如何解决Swift:弹出视图控制器时如何传递数据
我想在弹出视图控制器时将数据从 childVC 传递到 parentVC。
ChildViewController { /处理数据/ //获取数据值
value = 123 self.navigationController?.popViewController(动画:
真) }
ParentViewController { //使用子 vc(value 123) 的值 }
如何将数据传回以在 ParentViewController 中使用它?
解决方法
您可以使用转场,并在弹出到新的视图控制器之前准备转场。
在 VC1
performSegue(withIdentifier: "toVC2",sender: self)
let dataInVC1 = "wow"
override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
if segue.identifier == "toVC2" {
let vc = segue.destination as SecondViewController
vc?.someData = dataInVC1
}
在 VC2
var someData: String?
,
最简单的方法是在孩子上使用回调闭包属性。设置子视图控制器时从父级设置它。当孩子完成后,检查回调是否为 != nil(如果可选),如果是,则在弹出之前调用它。
,您还可以创建自定义处理程序以在弹出后完成。下面是一个例子:
extension UINavigationController {
func popViewControllerWithHandler(animated:Bool = true,completion: @escaping ()->()) {
CATransaction.begin()
CATransaction.setCompletionBlock(completion)
self.popViewController(animated: animated)
CATransaction.commit()
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。