场景分析
- 有两个页面:第1个页面、第2个页面。
- 第1个页面上有一个label,和一个按钮。
- 第2个页面上有一个txetField,和一个按钮。
- 点击第1个页面的按钮会跳转到第2个页面。
- 在第二个页面往txetField中可以输入文字,点击按钮会返回到第1个页面,并且会将txetField中的文字传到第1个页面并显示到第1个页面的label上。
分析
- 因为第2个页面想要将自己的数据显示在第1个页面,但是自己又不知道该如何展示,因为第2个页面作为委托方,第1个页面作为被委托方
代码
第2个页面
//.h文件
//第1步:声明代理
@protocol TwoDelegate <NSObject>
//代理方法
-(void)input:(NSString *)text;
@end
//第2步:生成一个成员变量,便于访问设置代理
@interface TwoViewController : UIViewController
@property(nonatomic, assign)id <TwoDelegate> delegate;
@end
//.m文件
//第2个页面中按钮的点击式事件
-(void)backOnClick:(UIButton *)sender{
//第3步:让代理去执行自己的方法,取得要传的值
[self.delegate input:self.textf.text];
//返回上一页
[self dismissViewControllerAnimated:YES completion:nil];
}
第1个页面
//.m文件中
//第4步:添加代理
@interface OneViewController ()<TwoDelegate>
@end
//点击跳转到第二个页面按钮的点击事件
-(void) onClick:(UIButton *)button{
TwoViewController *two = [[TwoViewController alloc]init];
//第5步:设置代理
two.delegate = self;
/*
*跳转操作
*/
}
//实现代理方法
-(void) input:(NSString *)text{
self.label.text = text;
}