码迷,mamicode.com
首页 > 编程语言 > 详细

Swift-代理

时间:2016-12-28 20:45:38      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:target   var   prot   gre   coder   click   结构   ror   ping   

委托是一种设计模式,它允许类或结构体将一些需要它们负责的功能交由给其他的类型

委托模式的实现很简单: 定义协议来封装那些需要被委托的函数和方法,使其遵循着拥有这些被委托的函数和方法

 

//制定需要遵守的协议,制定协议遵守NSObjectProtocol协议

protocol bottomViewDelegate : NSObjectProtocol {

    //设置协议的方法

    func bottomViewClick(btn : UIButton)

}

class BottomView: UIView {

    

    var btn : UIButton!

    //weak定义代理

    weak var delegate : bottomViewDelegate?

    override init (frame : CGRect){

        super.init(frame: frame)

        let arr = ["","",""]

        forin 0..<3 {

            btn = UIButton(type: .custom)

            btn.frame = CGRect(x: 375/3*i , y: 0, width: 375/3, height: 44)

            btn.setTitle(arr[i], for: .normal)

            btn.tag = i

            btn.backgroundColor = UIColor.gray

            btn.setTitleColor(i == 1 ? UIColor.blue : UIColor.black, for: .normal)

            btn.addTarget(self, action: #selector(clickedButton(button:)), for: .touchUpInside)

            self.addSubview(btn)

        }

    }

    func clickedButton(button : UIButton){

        //判断代理是否存在,让代理去执行方法

        delegate?.bottomViewClick(btn: button )

        

    }

    

    required init?(coder aDecoder: NSCoder) {

        fatalError("init(coder:) has not been implemented")

    }

 

}

 

Swift-代理

标签:target   var   prot   gre   coder   click   结构   ror   ping   

原文地址:http://www.cnblogs.com/lcl15/p/6230564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!