Swift之Delegate/闭包

Block

1.typealias ScenderBlock = (_ backString: String) -> Void

2.var block:ScenderBlock?

3.self.block?(textField1.text!)

4.在传值界面

vc.block = { backString in

            self.lab.text = backString

        }

Delegate

1.

@objc protocol scenderDelegate:NSObjectProtocol{

    func backTextFieldValue(_ textString:String)

}

2.weak var delegate:scenderDelegate?

3.

if self.delegate != nil && (self.delegate?.responds(to: #selector(ScenderDelegate.backTextFieldValue(_:))))!{

            self.delegate?.backTextFieldValue(textField2.text!)

        }

4.在回传的界面中a.添加ScenderDelegate     b. vc.delegate = self

c.

func backTextFieldValue(_ textString: String) {

        self.lab.text = textString

    }

全部代码-----------------------------------------------

------------------------------------------------------

------------------------------------------------------

class ViewController: UIViewController,ScenderDelegate {

    @IBOutlet weak var lab: UILabel!

    

    override func viewDidLoad() {

        super.viewDidLoad()

        

        

    }

    @IBAction func presentClick(_ sender: Any) {

        let vc:scenderVC = self.storyboard?.instantiateViewController(withIdentifier: "scenderID") as! scenderVC

        vc.block = { backString in

            self.lab.text = backString

        }

        vc.delegate = self

        self.present(vc, animated: true, completion: nil)

    }

    func backTextFieldValue(_ textString: String) {

        self.lab.text = textString

    }

}

import UIKit

typealias ScenderBlock = (_ backString: String) -> Void

@objc protocol ScenderDelegate:NSObjectProtocol{

  @objc func backTextFieldValue(_ textString:String)

}

class scenderVC: UIViewController {

    @IBOutlet weak var textField1: UITextField!

    @IBOutlet weak var textField2: UITextField!

    var block:ScenderBlock?

   weak var delegate:ScenderDelegate?

    

    override func viewDidLoad() {

        super.viewDidLoad()

    }

    

    @IBAction func blockClick(_ sender: UIButton) {

        self.block?(textField1.text!)

        self.dismiss(animated: true, completion: nil)

    }

    

    

    @IBAction func delegateClick(_ sender: Any) {

        if self.delegate != nil && (self.delegate?.responds(to: #selector(ScenderDelegate.backTextFieldValue(_:))))!{

            self.delegate?.backTextFieldValue(textField2.text!)

        }

        

        

        self.dismiss(animated: true, completion: nil)

    }

}

猜你喜欢

转载自www.cnblogs.com/chims-liu-touch/p/9265094.html