美文网首页
Swift正反向传值

Swift正反向传值

作者: 野比大雄001 | 来源:发表于2017-05-04 14:15 被阅读162次

    正向传值:

    1、在B界面中声明一个公开接收的属性,可以是字符串或者整形变量

    var passValue = ""

    2、在A界面跳转B界面方法前,给B界面的控制器接收属性赋值

    welcomeVc.passString1 = passValue

    3、在B界面加载视图或者视图显示时,利用控件显示公开接收属性值

    self.showTextField.text = passValue

    反向传值:

    a、Block闭包使用步骤:

    1.在B界面中声明一个block

    typealias PassValueBlock = (String, String)->()

    2.持有一个block变量

    var backBlock: PassValueBlock?

    3.调用

    if self.backBlcok != nil {

    if let tempStr1 = self.showTF1.text, let tempStr2 = self.showTF2.text {

    self.backBlcok!(tempStr1, tempStr2)

    }

    }

    4.在A界面中需要接受值的地方

    let welcomeVc = WelcomeViewController()

    welcomeVc.backBlcok = {

    (backStr1: String, backStr2: String) -> Void in

    self.usernameTextField.text = backStr1

    self.passwordTextField.text = backStr2

    }

    b、Delegate委托使用步骤:

    1.在B界面中声明一组公开的协议

    //声明一组公开的协议(反向传值)

    protocol PassValueDelegate: NSObjectProtocol {

    func testDelegate(str1: String, str2: String) -> Void

    }

    2.在B界面中声明一个公开的delegate属性

    weak var delegate: PassValueDelegate?

    3.向delegate发送消息,把参数传送给被委托方

    if self.delegate != nil {

    if let tempStr1 = self.showTF1.text, let tempStr2 = self.showTF2.text {

    delegate?.testDelegate(str1: tempStr1, str2: tempStr2)

    }

    }

    4.遵守协议

    5.实现协议中规定的方法,在A界面中需要接受值的地方

    func testDelegate(str1: String, str2: String) -> Void{

    self.usernameTextField.text = str1

    self.passwordTextField.text = str2

    }

    6.将自己设置成被委托对象

    welcomeVc.delegate = self

    相关文章

      网友评论

          本文标题:Swift正反向传值

          本文链接:https://www.haomeiwen.com/subject/pmortxtx.html