模型视图控制器 – 在Swift中传递数据

模型视图控制器 – 在Swift中传递数据,第1张

概述我一直在寻找一个答案,但只找到了答案. 我有一个viewController1与一个按钮到viewController2.没有代码,我通过界面构建​​器设置.在viewController2上,我有一个关闭自己的按钮 self.dismissViewControllerAnimated(true, completion, nil) 当视图被关闭时,我想将一个字符串从viewController2传 我一直在寻找一个答案,但只找到了答案.

我有一个vIEwController1与一个按钮到vIEwController2.没有代码,我通过界面构建​​器设置.在vIEwController2上,我有一个关闭自己的按钮

self.dismissVIEwControllerAnimated(true,completion,nil)

当视图被关闭时,我想将一个字符串从vIEwController2传回给VIEwController1.我该怎么做呢?此外,我正在使用swift.

提前致谢!

有两种常见的模式,这两种都不需要vIEwController2明确地知道vIEwController1(这对于可维护性是非常好的):

>为vIEwController2创建一个委托协议,并将vIEwController1设置为委托.无论何时要将数据发送回vIEwController1,都要让vIEwController2发送“委托”数据
>将一个闭包设置为允许传递数据的属性. vIEwController1会在显示vIEwController2时在vIEwController2上实现该关闭.每当vIEwController2具有要传回的数据时,它将调用闭包.我觉得这种方法比较“快”.

以下是#2的示例代码:

class VIEwController2 : UIVIEwController {    var onDataAvailable : ((data: String) -> ())?    func sendData(data: String) {        // Whenever you want to send data back to vIEwController1,check        // if the closure is implemented and then call it if it is        self.onDataAvailable?(data: data)    }}class VIEwController1 : UIVIEwController {   func doSomethingWithData(data: String) {        // Do something with data    }    overrIDe func prepareForSegue(segue: UIStoryboardSegue!,sender: AnyObject!) {        // When preparing for the segue,have vIEwController1 provIDe a closure for        // onDataAvailable        if let vIEwController = segue.destinationVIEwController as? VIEwController2 {            vIEwController.onDataAvailable = {[weak self]                (data) in                if let weakSelf = self {                    weakSelf.doSomethingWithData(data)                }            }        }    }}
总结

以上是内存溢出为你收集整理的模型视图控制器 – 在Swift中传递数据全部内容,希望文章能够帮你解决模型视图控制器 – 在Swift中传递数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1046747.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存