您的位置:首页 > 移动开发 > Swift

Swift 三种传值方式 【属性,代理,闭包】

2017-03-03 11:24 281 查看
属性 属性传值很简单,适用于 从第一级传入第二级(正向传递)

//在要进入的控制器定义属性
1.class SecViewController: UIViewController {
var labT = ""
}
//在一级控制器中给二级控制器赋值
2.let secVC = SecViewController()
secVC.labT = "属性传值"


2 代理传值(适用于逆向传值)二级到一级

//在二级控制器定义代理协议

protocol  SecViewControllerDelegate{

func SecDelegateSendValue(str:String)
}

class SecViewController: UIViewController {
var labT = ""
// 设置代理属性
var delegetes:SecViewControllerDelegate! = nil
//调用代理方法
if (self.delegetes != nil) {
self.delegetes.SecDelegateSendValue(str: "代理传值")
}
//在一级控制器遵循协议
class ViewController: UIViewController,SecViewControllerDelegate
//实现协议方法
func SecDelegateSendValue(str:String)
{
prolab.text = str
}
//成为代理者
secVC.delegetes = self


3.闭包传值(本质是OC中的代码块传值)

// 定义闭包
typealias callBackFunc = (_ text:String) ->Void
//创建闭包对象
var selCallBack:callBackFunc?
//调用闭包
if (selCallBack != nil) {
selCallBack!("代码块传值")
}
//在一级界面 获取闭包传的值
let secVC = SecViewController()
secVC.labT = "属性传值"

secVC.selCallBack = {(str:String) in

self.Blocklab.text = str
}


如上 ,三种传值方式的基本步骤。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift