iOS开发 ----- Controller之间的传值
来源:互联网 发布:november rain 知乎 编辑:程序博客网 时间:2024/06/08 13:21
Controller之间的传值
属性传值
A->B传值,在push之前,给B的对象的属性赋值即可,相对简单但这样的话B->A无法传值
单例传值
单例的话,每次实例化一个对象都是时原来的,所以不会改变这个方法借助第三方类,不管是A->B 还是B->A 之间的传值都可以实现
block传值
1.A->B的传值 正向传值 流程 1.在B里生命一个block,然后在init的时候把block要做的事情写好 2.在push之前,调用 b.block();把值传过去即可 其实这里的的block也用到了属性,毕竟在push之前调用,要把值保存下来,所以正向传值的时候并没有什么优势 反向传值 流程 1.在A里声明block,写好要做的事 2.在B里声明block 3.在push之前,把A的block赋值给B的block 4.在B->A的时候,也就是pop之前,b.block();即可 这里反向从B中操作了A,为了避免强引用造成的内存泄露,所以在A的block中,把self变为week __week AController * controller = self;
代理传值
代理传值一般用来反向传值即从A->B之后,B传值给A 流程 1.在B里声明一个协议,写好实现方法func 2.在B里声明一个遵守这个协议的代理 3.在A里遵守这个协议,并实现协议的方法func 4.在A里,A->B push之前设置B的代理为A 5.在B里,pop之前,[]self.delegate func()];
通知中心传值
正反都可以,原理是一样的,通知中心是一个单例,每个APP只有一个通知中心,类似于电台,但一个通知中心可以有多个频道,每个频道传递不同的数据,每个controller都可以监听信息,获取对自己有用的信息,然后通过view展示简单的说就是, 谁要传值,谁就建立一个频道,写入自己要传递的信息 谁要接受,谁就去监听这个频道,获取值之后,做自己想做的事情在B->A 也就是pop之前 建立一个名叫changeColor的频道,里边传递的内容时blue [[NSNotificationCenter defaultCenter] postNotificationName:@"changeColor" object:@"blue"];在A->B 之前,可以在viewWillAppera中,声明监听电台的方法当可以从电台changeColor收到消失的时候,就会调用changeColorFunc这个方法 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeColorFunc:) name:@"changeColor" object:nil];这里可以直接通过notif拿到频道传递的数据-(void)changeColorFunc:(NSNotification *)notif{ //这里会存储广播信息 NSString * str = notif.object; //notif.userInfo 一个字典,objectForKey 取到相关数据 //对应post方法 中的userInfo if ([str isEqualToString:@"blue"]) { self.view.backgroundColor = [UIColor blueColor]; }}
0 0
- iOS开发 ----- Controller之间的传值
- 一次controller之间的传值
- MVC- View和Controller之间的传值
- SpringMVC controller与页面之间的传值
- ios controller之间传递参数
- ios controller之间传递参数
- controller 之间的跳转
- ios controller初始化,application,window,controller和view之间的关系
- angularjs controller之间的通信
- angularjs Controller之间的通信
- Controller之间的通信方式
- angularjs Controller之间的通信
- IOS 开发 View Controller 综述
- 【深入浅出IOS开发】彩票-代理实现子Controller的切换
- 【深入浅出IOS开发】彩票-代理实现子Controller的切换
- iOS开发之导航栏Navigation Controller的使用
- 【iOS开发】获取当前view(视图)所在的Controller(控制器)
- springmvc controller之间传参
- Android 取消横竖屏切换Activity重走生命周期
- 剑指offer-给出一个入栈序列和一个出栈序列,判断出栈序列是否合法。
- 第4周—项目3.(1)结点逆置
- 卡尔曼滤波算法实例剖析--机器人足球赛场中的定位算法
- 归并排序
- iOS开发 ----- Controller之间的传值
- Java教程开山篇—开发环境搭建
- most of 1-1000
- nginx学习
- PHP无限分类的原理
- Android读写操作之内存的读写操作
- google adsense初次申请后广告无法显示问题
- LightOJ 1030 Discovering Gold 概率
- iOS通过UIAlertView实现Android Toast效果