控制器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;
//實現頁面傳值
}
}