iOS Developer

Swift中代理使用篇(一)

2016-08-18  本文已影响483人  洲洲哥

本文首发地址
代理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?
  1. ViewdidLoad中初始化,并且给table的tableHeaderView
let view: TableHeadeView = TableHeadeView(frame: CGRectMake(0,0,100,100))
self.headView = view
/**设置代理为遵循了HeaderDelegate的对象*/
self.headView?.delegate = self
myTable.tableHeaderView = self.headView

4. 实现代理函数

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

实现代理函数

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

到这里,你点击当前的按钮,就会发现你的tableView中就多出一行咯。怎么样简单吧!!
如有问题可添加我的QQ:1290925041
还可添加QQ群:234812704(洲洲哥学院)
欢迎各位一块学习,提高逼格!
也可以添加洲洲哥的微信公众号

更多消息

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

这里写图片描述
上一篇下一篇

猜你喜欢

热点阅读