我想通过我的数据从一个ViewController
到另一个VC上VC dismiss。这可能吗?
我尝试了下一个方法,没有成功:
点击按钮时:
self.dismiss(animated: true) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "EditViewController") as! EditViewController
controller.segueArray = [values]
}
当EditViewController
再次出现时,我的segueArray
在那里是nil
。
我如何将数据从my ViewController
传递到EditViewController
?
5条答案
按热度按时间ttisahbt1#
将数据传递回前一个视图控制器的最好方法是通过委托。。当从ViewController A转到B时,将视图控制器A作为委托传递,并在ViewController B的viewWillDisappear方法上,调用ViewController A中的委托方法。协议将帮助定义委托和需要由以前的VC实现的方法。这里有一个简单的例子:
传递数据的协议:
视图控制器A:
正在解除viewcontroller:
b09cbbtk2#
在解除完成块中,创建EditViewController的新示例。我假设导航堆栈中存在另一个EditViewController示例,您需要找到该示例并将segueArray设置为values。你可以通过遍历你的导航堆栈的viewcontrollers来实现,比如:
但我建议使用delegate模式,比如:
在dismiss块所在的viewcontroller(称之为ViewController)中,声明一个delegate属性:
然后,在呈现(我假设来自EditViewController)ViewController的示例时,设置委托如下:
并使EditViewController符合委托协议,如:
42fyovps3#
要检测何时按下视图控制器上的后退按钮,我只需用途:
von4xj4u4#
通用解决方案:(🔸Swift 5.1)
rlcwz9us5#
我认为最简单的解决方案是使用完成处理程序:
示例: