Swift中Block的使用

4,264 阅读1分钟

ViewController

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {
        var mainView:MineView
        
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        mainView = MineView()
        mainView.frame = CGRect.init(x: 0, y: 0, width: 100, height: 100)
        mainView.backgroundColor = UIColor.lightGray
        self.view.addSubview(mainView)
        
        mainView.sblock = { (str:String) in
            mainView.mineBtn.setTitle(str, for: UIControl.State.normal)
        }
    }
}

TestView

import UIKit
class MineView: UIView {
    var mineBtn:UIButton!
    
    //定义
    typealias SelectBlock = (String)->Void
    //声明
    var sblock:SelectBlock?

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.backgroundColor = UIColor.lightGray
        
        self.setupView()
    }
    
    func setupView(){
        mineBtn = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: 100, height: 100))
        mineBtn.setTitleColor(UIColor.black, for: UIControl.State.normal)
        mineBtn.setTitle("000", for: UIControl.State.normal)
        mineBtn.addTarget(self, action: #selector(ClickBtn), for: UIControl.Event.touchUpInside)
        self.addSubview(mineBtn)
    }
    @objc func ClickBtn(){
        self.sblock?("xk")
    }
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}