美文网首页
swift3.0代理模式

swift3.0代理模式

作者: figure_ai | 来源:发表于2017-01-06 00:17 被阅读0次
  • 以view文件和controller文件的数据传递为例,代码如下

view文件中


import UIKit
//定义协议
protocol LoginViewDelegate: class {
    func loginButtonClick(btn: UIButton)
}
class LoginView: UIView {
    //代理属性
    public weak var delegate: LoginViewDelegate?    

  override func layoutSubviews() {
       //添加一个按钮
        loginButton.setTitle("登录", for: UIControlState.normal)
        loginButton.setTitleColor(UIColor.white, for: UIControlState.normal)
        loginButton.titleLabel?.font = UIFont.systemFont(ofSize: 15)
        loginButton.frame = CGRect(x: 100, y: 100, width:50, height: 30)
        loginButton.addTarget(self, action:#selector(loginButtonClick), for: .touchUpInside)
        self.addSubview(loginButton)
  }
    //按钮的点击事件
    func loginButtonClick() {
        print(""点击了登录按钮")
        //调用代理方法
        delegate?.loginButtonClick(btn: loginButton)
    }
}

controller文件中

class LoginViewController: UIViewController,LoginViewDelegate{
        //初始化一个LoginView对象
        let loginView = LoginView()
        loginView.frame = self.view.frame
        self.view.addSubview(loginView)
         //设置代理属性
        loginView.delegate = self
 }
    //MARK: - LoginViewDelegate实现代理方法
    func loginButtonClick(btn: UIButton) {
        print("调用了代理方法-----" + (btn.titleLabel?.text)!)
    }


Snip20170106_1.png
  • 在添加协议的时候可能会报以上错误,原因是因为没有实现protocol中的方法,protocol中的方法默认是必须实现的。可选实现需在协议和方法前加@objc,代码如下:
@objc protocol LoginViewDelegate: class {
    @objc optional func loginButtonClick(btn: UIButton)
}

相关文章

  • swift3.0代理模式

    以view文件和controller文件的数据传递为例,代码如下 view文件中 controller文件中 注 ...

  • Swift3.0 Delegate和Block的实现

    Swift3.0 中代理的使用方法一、声明协议1.制定协议 2.用weak定义代理 3.判断代理是否存在,让代理去...

  • Swift 3张图片轮播

    写的不好 ~ swift3.0 可自定义轮播内容 用法=============== 代理协议方法

  • swift3.0蓝牙开发(2)

    承接上篇swift3.0蓝牙开发(1) 三.代码展示 1.设置代理CBCentralManagerDelegate...

  • 设计模式

    单例模式 模板方法模式 工厂模式 代理模式 静态代理 JDK动态代理

  • 设计模式

    单例模式 代理模式 静态代理 jdk动态代理 cglib动态代理 工厂模式 适配器模式 建造者模式 观察者模式

  • kube-proxy的3种模式

    userspace代理模式 iptables代理模式 IPVS代理模式 https://kubernetes.io...

  • 第4章 结构型模式-代理模式

    一、代理模式简介 二、代理模式3个角色 三、代理模式的优点 四、代理模式的实例(游戏代练)

  • 理解代理模式

    原创博客地址 简介 代理模式,也叫做委托模式,分为:静态代理动态代理 代理模式也是平时比较常用的设计模式之一,代理...

  • 结构型 代理模式(文末有项目连接)

    1:什么是代理模式 2:没用代理模式时的实例 3:使用代理模式将其解耦(静态代理) 3:使用代理模式将其解耦(动态...

网友评论

      本文标题:swift3.0代理模式

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