Swift中代理使用篇(一)

来源:互联网 发布:我国大数据市场规模 编辑:程序博客网 时间:2024/06/01 09:32

代理Delegate是程序中最常用的功能之一,不亚与Swift中的闭包。今天就带来一个示范,说说在Swift中代理函数的使用方法。

如果对闭包不熟悉的同学可以参考《看我怎么搞定OC的block和Swift的闭包》

面试的时候有可能会问到,你什么时候用闭包什么时候用代理,我想了一想:我在使用它们两个时候尼,闭包能完成的功能代理同样也能完成。没什么区别之分。如果说非要说有区别,那就是在代码量上的了。哈哈哈哈哈哈哈
其实在使用闭包哪里多尼?比如一个代码段指定完了需要在执行另外一个代码段,这种情况。我习惯的是,如果在同一个页面上,比如最简单的咱们封装的网络请求,用的闭包,什么情况都能铺货到。还能针对情况作出处理

代理 就是在同的页面上产生互动的时,这样我习惯用代理函数来完成功能的转接。因为在这个代理函数里,你只负责处理你当前的业务就可。方便管理、容易读

跟着我的代码一块来

今天的实例说明一下:在一个VC上放了一个UITableview,新创建了一个UIView,并且在他的里头放了一个UIButton,点击按钮,滴啊用代理在当前的VC上刷新数据源添加到UITableview上。

1. 创建TableHeadeView也就是头部的view

创建代理协议

@objc protocol HeaderDelegate { /**代理函数*/func buttonClick(str: String) -> String}

创建完成之后我们申明一个代理变量和一个按钮

/**代理对象*/var delegate: HeaderDelegate?/**单击按钮*/private var submitBtn: UIButton?

2. 添加UIbutton并创建单击事件

submitBtn = UIButton(type: .Custom)submitBtn?.frame = CGRectMake(10, 30, 100, 50)submitBtn?.backgroundColor = UIColor.redColor()submitBtn?.addTarget(self, action: #selector(ClickAction(_:)), forControlEvents: .TouchUpInside)self.addSubview(submitBtn!)

按钮单击事件如下这里就使用代

/**按钮单击事件*/func ClickAction(sendr: UIButton)  {/**调用代理函数,并传入数据*/self.delegate?.buttonClick("fffff")}

在这里我们调用了代理的buttonClick的函数。该方法隶属于申明的代理,所以在调用时,就要从协议中用点语法调出。也可以把申明的接口协议理解成文件来使用。

3. 看代理对象的处理方法

  1. 添加遵循协议HeaderDelegate
  2. 创建两个属性
    /**添加头部view的对象*/weak var headView: TableHeadeView?
  3. ViewdidLoad中初始化,并且给table的tableHeaderView
    let view: TableHeadeView = TableHeadeView(frame: CGRectMake(0,0,100,100))self.headView = view/**设置代理为遵循了HeaderDelegate的对象*/self.headView?.delegate = selfmyTable.tableHeaderView = self.headView

    4. 实现代理函数

    NOTICE:因为我们已经遵循了HeaderDelegate协议,并且还设置了代理对象就是自己,所以就由自己来实现这个代理函数了。

实现代理函数

 /**使用代理添加数据*/func buttonClick(str: String) -> String {self.namesArry.insert(str, atIndex: 0)self.myTable.reloadData() return "dddd"}

到这里,你点击当前的按钮,就会发现你的tableView中就多出一行咯。怎么样简单吧!!

如有问题可添加我的QQ1290925041

还可添加QQ:234812704(洲洲哥学院)

欢迎各位一块学习,提高逼格!


更多消息

更多信iOS开发信息 请以关注洲洲哥 的微信公众号,不定期有干货推送:


这里写图片描述
0 0
原创粉丝点击