委托是一种设计模式,它允许类或结构体将一些需要它们负责的功能交由给其他的类型
委托模式的实现很简单: 定义协议来封装那些需要被委托的函数和方法,使其遵循着拥有这些被委托的函数和方法
//制定需要遵守的协议,制定协议遵守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 = ["日","月","周"]
for i in 0..<3 {
btn = UIButton(type: .custom)
btn.frame = CGRect(x: 375/3*i , y: 0, 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")
}
}