• 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)

        }

    }

    提高技能如同提升自信心。
  • 相关阅读:
    组合博弈入门
    模拟练1
    鼠标点击 input,显示瞬间的边框颜色,对之修改与隐藏
    display: inline-block兼容性写法
    background-clip与background-origin两者的区别
    article标签和aside标签两者的理解
    jQuery插件实现左右无缝轮播
    JS面向对象基础2
    JS面向对象基础1
    CSS3的基础知识点
  • 原文地址:https://www.cnblogs.com/chims-liu-touch/p/9265094.html
Copyright © 2020-2023  润新知