IOS頁面(控制器之間)傳值之代理

控制器B要傳值給控制器A
1.須要一個協議,協議裏有一個方法,這個方法的參數便是要傳遞的參數
@protocol chuanzhi <NSObject>

@required
-(void)chuanzhi:(NSString*)str1 WithString2:(NSString*)string2;

@end
 
2.須要控制器B中有一個實現這個協議的代理屬性
@property(assign,nonatomic)id<chuanzhi>delegate;
 
3.用這個代理屬性調用代理裏的方法,由於這個方法須要參數,因此就要給這個方法參數,這個時候正好把要傳遞給控制器A的參數做爲協議方法的實參。
//在點擊咱們銷燬模態試圖的方法裏增長一個代理調用協議的方法
- (IBAction)disAction:(UIButton *)sender {
   
   
    [self dismissViewControllerAnimated:YES completion:^{
       
        //在點擊咱們銷燬模態試圖的方法裏增長一個代理調用協議的方法
        [self.delegate chuanzhi:self.textFiled1.text WithString2:self.textFiled2.text];
       
    }];
4.第3步只是讓一個並無實際代理的代理屬性調用了協議方法,具體方法的內容須要控制器A來實現(即A實現了這個協議併成爲代理)。
  @interface oneViewController : UIViewController<chuanzhi>   控制器A
 
//實現代理的方法
twoViewController* twoVC = [[twoViewController alloc]init];
    //成爲twoVC的代理  twoVC即控制器B
    twoVC.delegate = self;
-(void)chuanzhi:(NSString*)str1 WithString2:(NSString*)string2{
 
    self.textFiled1.text = str1; 
    self.textFiled2.text = string2;
 
//實現頁面傳值
}
}
相關文章
相關標籤/搜索