IOS页面(控制器之间)传值之代理
控制器B要传值给控制器A
1.需要一个协议,协议里有一个方法,这个方法的参数即是要传递的参数
@protocol chuanzhi <NSObject>
@required
-(void)chuanzhi:(NSString*)str1 WithString2:(NSString*)string2;
@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];
[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;
self.textFiled2.text = string2;
//实现页面传值
}
}