码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 传值总结

时间:2015-08-19 13:28:15      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:ios代理传值   ios block传值   ios 通知传值   ios单例传值   ios nsuserdefault传值   

             在ios开发中,我们经常需要用到传值来实现对数据的传递和加载,不管是跨页面的传值还是不跨页面的传值,关于传值的实现我简单的做了以下总结:

      一:利用通知(NSNotificationCenter)进行传值:

              首先我们从ViewController跳到RootViewController中,在RootViewController中写如下代码:

技术分享

然后在ViewController里面接收这个通知,一定要在主线程里面比如:viewDidLoad函数里面添加这句代码:

技术分享

这样我们就简单的利用了通知实现了传值。
     
 二:通过委托delegate实现传值:
同样我们先从ViewController跳到RootViewController中,在RootViewController.h中写如下代码:技术分享

之所以用weak属性设置代理是为了防止循环引用,然后在RootViewController.m中添加如下代码:技术分享

最后回到我们的ViewController.h文件中,引用RootViewController.h头文件,并遵守协议,如:

技术分享

在ViewController.m文件中,实现代理方法

技术分享

这样我们就实现了代理传值的方法,是不是很简单?

            三:利用Block实现传值:

跟上面的第一步一样,我们先从ViewController跳到RootViewController中,在RootViewController.h中声明block,写如下代码:

技术分享

然后在RootViewController.m中创建这个block,如:

技术分享

最后我们在ViewController.m跳转的方法中实现对block的回调,如:

技术分享

这样我们就实现了利用block实现传值的过程。

   三:利用NSUserdefault来实现传值,NSUserdefault能够在沙盒中保存少量的数据,我们可以在某个地方把数据存储到沙盒,然后在别的地方通过读取沙盒,来取到其中的数据实现数据的传递,一般我们很少会使用这种方法。简单步骤如下:技术分享

然后在ViewController.m中添加如下代码就可以实现传值效果:技术分享

       四:利用单例实现传值:

首先我们要先创建个单例,比如:MyName对象,在MyName.h中,如下:技术分享

然后在MyName.m中实现+(MyName *)sharedDataName方法,如:技术分享

然后在RootViewController.m中实现下面方法:技术分享

最后在ViewController.m中添加如下代码就可以实现利用单例传值:技术分享

      五:利用属性传值,这个是最简单的传值方式,一般新手用的比较多,简单来说就是在调整方法对对象进行初始化以后直接拿到这个值对对象的某个属性进行赋值,如下:技术分享

但是属性传值局限性较大,使用较少。暂时先总结这些,当然或许可能会有更好的传值方式,如果你知道,那请留言告之,一定感激不尽,如果有写的不好的地方,欢迎指正,同时也希望能够相互交流,共同进步!感谢你的观看!如转载,请附上链接,谢谢!

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS 传值总结

标签:ios代理传值   ios block传值   ios 通知传值   ios单例传值   ios nsuserdefault传值   

原文地址:http://blog.csdn.net/y_zhangpengwei/article/details/47775845

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!