反向传值 代理

2016-05-30  本文已影响30人  MakeThatChange

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];

———————————————————————————————————————

上一篇下一篇

猜你喜欢

热点阅读