Swift代理反向传值

很多初学者一接触到delegate简直一头雾水,傻傻分不清到底谁是代理。 这里我告诉大家一个我常用的思维,不用管谁是代理谁是委托者,记住以下几点就可以了。

谁要传值谁就申明代理协议和代理属性

举个例子:比如我们这个场景,B要给A传值,那B就应该申明代理协议和代理属性,A就是B的代理,很简单吧!

B界面

1.制定协议(不写NSObjectProtocol暂时不会报错,但是写属性是无法写weak)

protocol MyDelegate:NSObjectProtocol {

//设置协议方法

func returnValue(text:String)

}

//在swift中,制定协议需要遵守NSObjectProtocol协议,除了类可以遵守协议,结构体也可以遵守协议

//在OC中我们制定协议,通常继承自NSObject,可以这样理解,所有继承自NSObject的对象都可以实现协议方法(同样我们也可以指定哪些对象可以实现我们制定的协议方法)

2.用weak定义代理

weak var delegate: MyDelegate?

3.判断代理是否存在,让代理去执行方法

func returnValue() {

//'?'代替了responsed

delegate?.returnValue(text: self.textF.text!)

}

Swift代理反向传值_第1张图片

A界面

1.遵守协议

classViewController:UIViewController,MyDelegate{ //遵守协议

2.设置代理为self

secondVC?.delegate = self

3.实现协议方法

func returnValue(text: String) {

}

Swift代理反向传值_第2张图片

github下载地址Demo:https://github.com/liuguilin/delegate

你可能感兴趣的:(Swift代理反向传值)