Swift4.0 - 代理协议的使用和创建

写项目是我们免不了要使用代理、通知、block来进行传值或者其他操作,此篇仅仅介绍代理的使用方法,思想是和OC的一样的。

协议的声明

//声明协议
@objc protocol LoginViewDelegate {
    
    //协议方法
    func loginViewNextButtonPhone(phone: String)
}

创建协议的属性

   weak var delegate: LoginViewDelegate?

协议的使用

//声明协议
   if let delegate = self.delegate {
            
         delegate.loginViewNextButtonPhone(phone: self.phoneField.text!)
            
}

协议的调用

import UIKit

class LoginViewController: BaseViewController, LoginViewDelegate {
    
    lazy var loginView: LoginView = {
        
        let loginView = LoginView.init(frame: CGRect.init(x: 0, y: 0, width: AppFrame.ScreenWidth, height: AppFrame.ScreenHeight))
        //遵循代理
        loginView.delegate = self
        
        return loginView
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        self.title = "登录/注册";
        self.view.backgroundColor = UIColor.white;
        
        self.view.addSubview(self.loginView)
    }
    
    //MARK: - LoginViewDelegate
    func loginViewNextButtonPhone(phone: String) {
        
        BJDLog(phone)
        
    }
    

你可能感兴趣的:(Swift4.0 - 代理协议的使用和创建)