場景分析
- 有兩個頁面:第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;
}