美文网首页iOS Developer
Swift中代理使用篇(一)

Swift中代理使用篇(一)

作者: 洲洲哥 | 来源:发表于2016-08-18 14:30 被阅读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开发信息 请以关注洲洲哥 的微信公众号,不定期有干货推送:

    这里写图片描述

    相关文章

      网友评论

        本文标题:Swift中代理使用篇(一)

        本文链接:https://www.haomeiwen.com/subject/cwuvsttx.html