Swift-代理

Posted 风雨彩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift-代理相关的知识,希望对你有一定的参考价值。

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

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

 

//制定需要遵守的协议,制定协议遵守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-代理的主要内容,如果未能解决你的问题,请参考以下文章

swift中代理的使用

Swift 2 如何实现需要授权的代理主机和端口?

swift swift代理模式演示。

Swift 4/5 设置将代理添加到 WKWebview

Swift 中的外观代理 (iOS)

Swift语言精要 - 浅谈代理模式(Delegate)