美文网首页
VC之间数据传递

VC之间数据传递

作者: 百思不得解 | 来源:发表于2016-07-02 11:37 被阅读0次

VC之间数据传值有多种方法,比如代理,消息,appdelegate保存全局变量,或者使用DB/NSDefault保存变量等,我们下面详细介绍几种方式。

1.正向传值


场景:从level1ViewController传值到level2ViewController,not vice versa

方法:利用属性传值即可

DayActivityVC *dayActivityVC = [[DayActivityVC alloc]init];

[dayActivityVC setDayId:self.id];

[self.navigationController pushViewController:dayActivityVC animated:YES];

总结:这种方式,只是简单的将数据从VC1传递到了VC2,然后互不干扰。

2.双向沟通


场景:level1ViewController创建了level2ViewController,她们之间有些共享数据,两者同时可以读写,但是需要互相通知。

方法:可以使用正向传值将值传递给level2ViewController,然后通过delegate方式将VC2的更改通知level1ViewController,但是这种耦合度较高,推荐Model方式。

dataModel dm = [dataModel alloc] initWithData: shareData];  

[[level2ViewController alloc] init];

[level2ViewController setProp_1];

[level2ViewController setModel: dm];

[level1ViewController. navigationController pushViewController:level2ViewController];

总结:当level2ViewController修改了shareData不需要通知level1ViewController,shareData会通知她的controllers的。

3.反向传值


场景:基本操作都还是前面描述的1或2中的情形,区别点在于,在level2ViewController的生命期内,发生了某个事件,需要让level1ViewController知道这个事件,并且作出对应的处理。

方法:

总结:但是!一定要谨慎使用这种方案。如果发现代码中需要用到这种结构,首先应该重新审视项目的架构,看能不能用前面两种方案来处理,可能需要做一定的代码重构。当前面的方案实在是无能为力的时候,才考虑使用此方案。而且,尽量让这种逆向的消息传递更简单,消息事件不要太多。

4.大量消息的双向沟通

如果你的代码中有大量的消息双向沟通,你需要重新审视代码,将view合并到一起

5.利用block

http://www.tuicool.com/articles/UfUJVn

6.利用notification

http://www.th7.cn/Program/IOS/201410/302577.shtml

http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers

http://blog.csdn.net/ryantang03/article/details/7915045

相关文章

  • VC之间的数据传递方式小结

    VC之间的数据传递方式大体有6种 设置VC的属性 设置代理delegate block 通知notificatio...

  • VC之间数据传递

    VC之间数据传值有多种方法,比如代理,消息,appdelegate保存全局变量,或者使用DB/NSDefault保...

  • Swift4.0 通知的使用

    通知一般在mode与View需要交流(传递数据)时使用,或者也可以用于多线程的消息传递,也可是VC与VC或者VC内...

  • 第五章 Activity跳转及Fragment

    在Activity之间数据传递 使用Intent的putExtra()方法传递数据 使用Bundle类传递数据使用...

  • Activity之间传递数据

    Activity之间的通信可以说是Android开发中的基础,今天重新回顾了一下,并且做了demo,记录下来希望也...

  • Activity之间传递数据

    传递 Bundle bundle = new Bundle(); bundle.putSerializable("...

  • android-fragment传递数据(接口方式)

    今天来看一下fragment和fragment之间传递数据以及和activity之间传递数据。 这里我们用接口的方...

  • Vuejs组件

    component 组件之间数据传递

  • 8Activity间传递数据

    Activity之间传递数据一般通过以下几种方式实现: 通过intent传递数据 通过Application 使用...

  • Activity详细总结

    一、Activity的生命周期 二、Activity之间传递数据 1. 通过Intent传递数据 通过Intent...

网友评论

      本文标题:VC之间数据传递

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