反向传值 代理
1).第二页中
1.声明协议和方法
@class PurpleViewController;//向前生声明
@protocol PurpleViewControllerDelegate
- (void)purpleVC:(PurpleViewController *)purpleVC text:(NSString *)text;
@end
2.声明协议类型的属性
@property (nonatomic, weak) id delegate;
3.在适当的位置调用协议方法
//监听是否输入了字符,是否点击了return
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text isEqualToString:@"\\n"]) {
if ([_delegate respondsToSelector:@selector(purpleVC:text:)]) {
[_delegate purpleVC:self text:textView.text];
}
[self dismissViewControllerAnimated:YES completion:nil];
}
return YES;}
2).第一页中
1.引入第二页遵守协议
@interface ViewController ()
<PurpleViewControllerDelegate>
2.在适当时机,将自己设置为第二页的代理类
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"11"]) {
PurpleViewController *vc = segue.destinationViewController;
vc.delegate = self;
}
}
2.调用方法
- (void)purpleVC:(PurpleViewController *)purpleVC text:(NSString *)text{
self.textView.text = text;
}
———————————————————————————————————————
执行到这一步之前,已近将第一页的地址赋给了第二页的delegate,当delegate在第二页调用方法,传入第二页的参数时,第一页
会执行协议的方法
[_delegate purpleVC:self text:textView.text];
———————————————————————————————————————