问题描述
在学习iOS的过程中,困扰我的一个问题就是 控制器页面之间的传值问题,例如顺传、逆传。
传值的方式有 代理传值、block传值、还有通知传值,有哪位好心大神能给讲一讲。
问题解答
回答1:顺传一般是直接传值
代理传值
A<B-Delegate>//A实现B协议B //声明协议和方法 声明代理属性Delegate->(methodFromB:(B)b value:(obj)obj)//B声明协议方法property-weak-deleagte//在A中B.delegate = A;//当B中发生传值时调用B[self.delegate methodFromB:self value:obj]//因为 self.delegate = A//A中执行定义的协议方法接收到值-methodFromB:(B)b value:(obj)obj
block传值
A//A中实现B的block的代码块B.block = ^(obj){};B//声明代码块typedef BBlockproperty-block//当B中调用self.block(obj);就会调用A中以实现的代码块实现传值
通知传值
A中接收通知NotificationCenter.addobserve(A).name('NAME').selector(noti:)-noti:(noti)noti{noti.obj//接收到值}B中发送通知NotificationCenter.postName('NAME').obj(obj)
单例传值
//用单例中的值更新A的值A.property = global.singleton.property;//B中值改变 把值赋给单例global.singleton.property = B.property;