、利用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传值:其实就是一部的高级传值方法,适用于传值给谁给上一页面。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)