swift-基础-传值

直接监听

  • Swift中可以直接拿到别的类的成员变量来监听

messageView.registorButton.addTarget(self, action: #selector(registorClick), forControlEvents: UIControlEvents.TouchUpInside)

@objc private func registorClick(button: UIButton)

    {
    }

代理

  • 控件中
import UIKit

protocol MessageVisitorViewDelegate: NSObjectProtocol

{

    // 默认情况下协议中的方法都是必须实现的

    func messageVisitorViewDidClickRegistorButton(messageVisitorView: MessageVisitorView)

    func messageVisitorViewDidClickLoginButton(messageVisitorView: MessageVisitorView)

}

    // 代理可以有,也可以没有,所以是可续

    weak var delegate: MessageVisitorViewDelegate?

    @IBAction func registorClick(sender: AnyObject) {
        // 因为协议方法都是必须实现,因此这里不需要判断代理是否实现了方法

        delegate?.messageVisitorViewDidClickRegistorButton(self)

    }

    

    @IBAction func loginClick(sender: AnyObject) {

        delegate?.messageVisitorViewDidClickLoginButton(self)

    }

  • 控制器
// 设置代理
messageView.delegate = self
// Swift中一般另外开辟一块代码块来写代理方法
extension MessageController: MessageVisitorViewDelegate

{

   func messageVisitorViewDidClickLoginButton(messageVisitorView: MessageVisitorView) {

    }

  func messageVisitorViewDidClickRegistorButton(messageVisitorView: MessageVisitorView) {

    }

}

你可能感兴趣的:(swift-基础-传值)