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() } }
相关文章推荐
- swift设计模式--观察者模式
- Swift学习笔记14——初始化(Initialization)和析构(Deinitialization)其一
- Swift Mailer ——Comprehensive mailing tools for PHP
- swift页面传值之block(闭包)传值
- Swift学习笔记13——类继承(Inheritance)
- Swift语法之 guard
- [swift]监测iphone自由落体动作
- Swift过程控制和功能
- Swift学习笔记12——下标(Subscripts)
- Swift学习笔记11——方法(Method)
- Swift学习笔记10——属性(Properties)
- Swift 线程
- Swift 2.0 之map 与 zip
- Swift学习笔记9——类和结构体(Classes and Structures)
- Swift学习- 继承(十三)
- Swift学习笔记8——枚举类(Enumerations)
- swift map
- 【面试必备】Swift 面试题及其答案
- 寒哥带你深入了解下Swift中的Value Type
- Swift-循环控制新特性