iOS 工作之余小总结之(六)(3) --四种界面反向传值的方式:委托代理传值

来源:互联网 发布:最安全的国家知乎 编辑:程序博客网 时间:2024/06/04 20:24

我再前两篇的博客中,总结了属性和回调方法的反向传值方法,但是,作为高级程序员,我们追求写出高内聚低耦合的代码。
这样不仅迭代的时候好修改,并且在有错误发生的时候,可以改动的比较小。而代理作为反向传值的手段,可以很好的解耦和,因为当A和B界面进行反向传值的时候,要在B中创建A控制器的属性,如果此时,有C和D界面也需要用B界面进行反向传值的时候,此时就要在B中写A,C,D的属性,只要有一个类要改动,B类也要进行改动。
而代理则不用,B界面声名一个id的指针,用于指向某一个用来反向传值的控制器,一劳永逸。下面我上代码。需求和之前一样,为了不让读者麻烦,我再写一遍需求:在AFYController中有一个Label,点击空白处推出BFYController界面,BFYController中有一个TextField,点击空白处返回AFYController,并将文本框中的text反向传值给AFYController,显示在AFYController的Label上。
1.在BFYController.h中,写一个协议,声明一个方法
这里写图片描述
2.BFYController.h中,声明一个属性用于管理代理对象
这里写图片描述
3.在BFYController返回AFYController的时候调用协议方法
这里写图片描述
4.在AFYController.m中,遵守BFYController中协议,成为代理
这里写图片描述
5.在AFYController.m中,实现BFYController中的协议方法
这里写图片描述
6.最后在AFYController.m中,让BFYController中的代理成为A
这里写图片描述
到这里,委托的反向传值就完成了,其实,这几种传值方式的逻辑思路都是一样的。但是代理可以解耦合,并且可读性也比较好。在从反向传值的最后一篇,我会总结用block进行反向传值,前面已经用了篇幅介绍block,即使从没有做过开发的朋友也可以使用和理解。

1 0
原创粉丝点击