ios cfnotificationcenteraddobserver怎么实现传值

ios cfnotificationcenteraddobserver怎么实现传值,第1张

向传值:

、利用present block 块进行向传值

RootViewController.m:

SubViewController * svc = [[SubViewControlleralloc]init]

//svc.label.text = @"向Block传值"

//句向属性传值,作用让B页面,能持A页面址,B要向A进行反向传值

//想给谁传值,要持谁址

svc.delegate =self

[selfpresentViewController:svc animated:YEScompletion:^{

svc.label.text =@"向Block传值"

}]

二、利用AB页面属性传值

反向传值:

、利用block进行 b界面向 a 界面反向传值

a 声明 block属性所要传值放入block 函数指针b接收

.h文件

@property(nonatomic,copy)void(^blockColor) (UIColor *)

.m文件

self.blockColor([UIColor blackColor])

注意用 copy

b.m文件 接收

svc.blockColor = ^(UIColor *color){

self.view.backgroundColor = color

}

二、通知观察者模式反向传值

例: viewController1向 viewController2传值

1.

Appdelegate 文件接收所要传递值变量用保存所要传递数据界面1写入界面2读取

@property (nonatomic,copy)NSString *string

2.

viewController1要传值候(按钮按)数据通UIApplication单例获取Appdelegate *delegate传入Appdelegate文件同向通知发送广播

[[NSNotificationCenter defaultCenter] postNotificationName:@"鬼" object:nil]

3.

viewController2 向通知注册添加自观察者数据改变用单例delegate 读取数据

-(void)becomObserver

{

//获通知,注册观察者

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeText) name:@"鬼" object:nil]

}

//收广播消息调用

-(void)changeText

{

//首先获取appDelegate象

AppDelegate * appDeleagte = [UIApplication sharedApplication].delegate

NSString * string = appDeleagte.string

NSLog(@"sss:%@",string)

label.text = appDeleagte.string

NSLog(@"label.txt = %@",label.text)

}

三、利用协议界面反向传值

AppDelegate

viewController2委托viewController1代理

viewController2委托制定协议并且属性delegate = viewController1,要遵循协议;

viewController1viewController2象属性delegate设自(vc1)

1.ViewController1.m

vc2.delegate = self

2.ViewController2.h文件

//委托制定协议代理必须遵守

@protocol BackValueDelegate

-(void)changeText:(NSString *)string

@end

@interface ViewController1 :UIViewController

//用设置代理并且遵守协议

@property (nonatomic,retain) iddelegate

@end

3. ViewController2.m文件

//利用代理传数据

[self.delegate changeText:@"****"]

四、用系统自带UIApplication单例进行传值

五、用自实现单例进行传值

六、用TargetAction 式进行两界面反复调用传值

(1)属性传值:A页面的值跳转到B页面之后把值传给B页面,只需要在.h文件中定义属性,A页面在跳转之前赋值给B页面的实例对象属性即可。一般用于正向传值给跳转界面。

(2)代理传值:首先在跳转界面B.h文件定义代理协议方法 ——>在B.m页面中实现委托 ——>在A.m中遵守协议,实现协议方法;这种方法多用于反向传值,即跳转界面传值返回给上个界面。

(3)通知传值:是要监听值得变化,谁就注册通知。A页面要监听B页面的值得变化,那么就在初始化方法里注册通知,当B页面的值发生变化时A页面就会执行change方法,在B页面小时方法中推送一个通知,相当于定义一个表示把值传给该标识通知的注册者。通知传值是一对多的关系,一般用于跳转界面传值给上一界面。

(4)单例传值:新建一个继承NSObject的类;在.h文件里声明一个属性和一个类方法;在.m文件实现类方法,初始化;单例方法其实就是一个只会初始化一次,然后给他赋值共享的一个单例,该方法适合正向和反向传值,但是不要滥用。

(5)Block传值:其实就是一部的高级传值方法,适用于传值给谁给上一页面。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11513063.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存