代理傳值

場景分析

  • 有兩個頁面:第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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章