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

swift 设计模式---委托(delegate)模式传值

2015-10-05 15:02 615 查看
两个对象之间的通信,也可以通过delegate传值(同步异步都可以)

第一步,声明协议:

protocol ModelDelegate{
func getModelData(string:String)
}


第二步,要传值的类定义协议:

class Model {
var delegate:ModelDelegate?
func getData(){
//这里是异步更新数据的方式
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)) { () -> Void in
delegate?.getModelData("12345678")
}
}
}


第三步:要传值的类中实现协议:

class ViewController: UIViewController,ModelDelegate {
//定义model对象
var model:Model!
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
//初始化然后将其委托给本类,和大部分UIKit中得控件的数据源,delegate用法一样
model = Model()
model.delegate = self
}
//实现的协议方法
func getModelData(string: String) {
//这点尤其注意,更新UI必须在主线程中,不然会有错误,在xcode7中。
dispatch_async(dispatch_get_main_queue()) { () -> Void in
self.label.text = string
}
}
//点击按钮加载数据
@IBAction func btnClicked(sender: AnyObject) {
model.getData()
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: