逆传 AB两个页面,将 B 页面的内容传到 A 页面
B页面
在 .h 文件中设置代理
/**
* 1.创建协议
*/
@protocol SecondBDelegate <NSObject>
/**
* 协议中必须实现的方法用 @required 来修饰:
*/
//@required
/**
* 协议中可选实现方法用 @optional 来修饰:
*/
//@optional
/**
* 2.声明协议方法
*/
- (void)sendValue:(NSString *)value;
@end
在 @interface 接口中声明协议的属性
/**
* 3.声明协议属性变量
*/
@property (nonatomic,weak)id<SecondBDelegate> delegate;
A 页面
在 A 页面的 .m 文件中签自定义的协议
<SecondBDelegate>
设置全局的 Label 接收传过来的内容
@property (nonatomic,strong) UILabel *valueLab;
在 A 页面创建接收内容的 label 和跳转到下一页的按钮
// 接收内容的 label
self.valueLab = [[UILabel alloc]initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, 60)];
[self.view addSubview:_valueLab];
// 跳转到下一页的按钮
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[self.view addSubview:btn];
btn.frame = CGRectMake(0, 64 + 80, SCREEN_WIDTH, 60);
[btn setTitle:@"下一页" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(nextClick:) forControlEvents:UIControlEventTouchUpInside];
[btn setTitleColor:[UIColor brownColor] forState:UIControlStateNormal];
// 下一页按钮的点击事件
- (void)nextClick:(UIButton *)btn{
// 初始化第二页的主页面
SecondBViewController *secondVC = [[SecondBViewController alloc]init];
//4.设置代理
secondVC.delegate = self;
// 跳转到第二页
[self.navigationController pushViewController:secondVC animated:YES];
}
//6.实现协议方法:
- (void)sendValue:(NSString *)value{
// 将传过来的值 赋给A页面接收的 Label 上
_valueLab.text = value;
}
B页面
创建一个 UITextField 输入将要传入的内容
创建一个返回上一页(A页面)的按钮
在B页面调用协议方法,将要传的内容添加到协议方法中 - 点击按钮返回上一页
//5、传值:
[self.delegate sendValue:_valueTextfield.text];
[self.navigationController popViewControllerAnimated:YES];
顺利将值传入前一页!!!