其實(shí)和oc中的block差不多,但是比block麻煩一點(diǎn)
直接上代碼
import UIKit
// 1.定義一個(gè)閉包類型
//格式: typealias 閉包名稱 = (參數(shù)名稱: 參數(shù)類型) -> 返回值類型
typealias loginBlock = (_ userNameText:String, _ passWordText:String) -> Void
class LoginView: BaseView {
//2. 聲明一個(gè)變量
var loginValueBlock : loginBlock?
func setLoginViews() -> Void {
loginButton = UIButton.init(type: UIButtonType.system)
loginButton.setTitle("立即登錄", for: UIControlState.normal)
loginButton.mas_makeConstraints { (make:MASConstraintMaker?) in
make?.top.equalTo()(passWordTF.mas_bottom)?.offset()(40)
make?.centerX.equalTo()(passWordTF)
make?.height.equalTo()(40)
make?.width.equalTo()(passWordTF)
}
loginButton.addTarget(self, action: #selector(loginAction), for: UIControlEvents.touchDown)
}
@objc func loginAction() -> Void{
print("登錄")
//4. 調(diào)用閉包,設(shè)置你想傳遞的參數(shù),調(diào)用前先判定一下,是否已實(shí)現(xiàn)
if loginValueBlock != nil {
loginValueBlock!(userNameTF.text!,passWordTF.text!)
}
}
//3. 定義一個(gè)方法,方法的參數(shù)為和swiftBlock類型一致的閉包,并賦值給callBack
func loginValue(_ block: @escaping loginBlock) -> Void {
loginValueBlock = block
}
}