Swift正反向传值

2017-05-04  本文已影响162人  野比大雄001

正向传值:

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

上一篇 下一篇

猜你喜欢

热点阅读