zoukankan      html  css  js  c++  java
  • 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, 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")

        }

     

    }

     

  • 相关阅读:
    Silverlight 学习笔记(二)silverligth 界面布局
    (C#)WinForm窗体间传值
    软件开发所需要的十三个文档
    XP下安装SQL2000企业版本(转载)
    .net 框架下快速Web开发(一)——纠结的里程
    .net MVC 框架调试过程中,产生大量的临时文件
    认识NHitenate
    如何循序渐进向.Net架构师发展[转载]
    核桃煲鸡汤
    .NET获取客户端信息 (C#)
  • 原文地址:https://www.cnblogs.com/lcl15/p/6230564.html
Copyright © 2011-2022 走看看