正向传值
第一步:在目标控制器中声明属性
@property (nonatomic, copy)NSString *text;
第二步:在push之前将值赋给属性
SecondViewController *svc = [[SecondViewController alloc] init];
svc.text = self.fv.field.text;
[self.navigationController pushViewController:svc animated:YES];
第三步:在页面加载的时候赋值
self.sv.field.text = self.text;
反向传值 1 代理传值 2 block传值
1 代理传值
第一步 :在目标控制器中声明协议和代理
@protocol ValueDelegate <NSObject>
- (void)changeValue:(NSString *)value;
@end
@property (nonatomic, assign)id <ValueDelegate> delegate;
第二步:
在pop之前调用代理方法
[_delegate changeValue:self.sv.field.text];
第三步:
在push之前指定代理 并实现协议
svc.delegate = self;
- (void)changeValue:(NSString *)value {
self.fv.field.text = value;
}
2 blcok传值 (block可以看做是一个代码块)
第一步:声明一个block 创建一个block属性
typedef void(^ValueBlock)(NSString *value);
@property (nonatomic, copy)ValueBlock block;
第二步:
在push之前给block赋属性值:
svc.block = ^(NSString *value) {
self.fv.field.text = value;
};
第三步:在pop之前调用block属性
self.block(self.sv.field.text);
在实际开发中传值没有这么简单 但万变不离其宗 都是根据这种方法来进行传值的