1. 正向传值
- 使用场景:界面 A 跳转界面 B 的同时,向界面 B 传递值,即上级向下级传递
- 步骤:
-
在界面 B 的 .h 文件中公开声明一个属性
@interface ViewC1 : UIViewController //正向传值 1 @property (nonatomic, copy) NSString *value_1; @end
-
导入界面 B 的头文件,并使用 B 创建出一个对象,对属性进行赋值
ViewC1 *VC1 = [[ViewC1 alloc] init]; VC1.value_1 = @"我是正向传值"; [self.navigationController pushViewController:VC1 animated:YES];
-
2. block传值
- 使用场景:类似代理,当协议中的方法只有一个,可以使用 block,此时可以不用写协议,相当于简化的代理
- 步骤:
-
在发送者头文件中定义 block 属性
@interface ViewC3 : UIViewController @property (nonatomic, copy) void (^changeMainVCBgColor)(UIColor *color); @end
-
在发送者 .m 文件合适位置调用 block
//调用block if (self.changeMainVCBgColor) { self.changeMainVCBgColor([UIColor redColor]); }
-
在接收者中实现具体操作
ViewC3 *VC3 = [[ViewC3 alloc] init]; VC3.changeMainVCBgColor = ^(UIColor *color) { self.view.backgroundColor = color; }; [self.navigationController pushViewController:VC3 animated:YES];
-
链接:https://www.jianshu.com/p/487bba00598c