代理:
1、发送信息的控制器设置一个代理,并自定义一个代理的方法,用来传递数据
2、接受信息的控制器遵循发送信息的控制器的协议
3、接受信息的控制器设置发送信息的控制器的代理为自己self
4、接受信息的控制器实现协议中的方法,即接受数据
首先将控制器通过modal(push)方式联接,同时设置segue的identifier标识,因为这个identifier是与目的控制器唯一的识别的方式,最后再进行代码操作。
1、所有文件:
2、让FirstViewController关联自己的类ViewController(.h/.m)
3、让SecondViewController关联自己的类SecondViewController(.h/.m)
4、设置segue的identifier标识
具体代码如下:
FirstViewController控制器关联的ViewController类
1 #import "ViewController.h" 2 #import "SecondViewController.h" 3 4 @interface ViewController ()5 @property (weak, nonatomic) IBOutlet UITextField *firstTextField; 6 7 @end 8 9 @implementation ViewController10 11 - (void)viewDidLoad {12 [super viewDidLoad];13 }14 15 //重写该方法,视图切换时,自动调用16 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender17 {18 if([segue.identifier isEqualToString:@"modal"])19 {20 //获取目的控制器21 SecondViewController *secondVC = segue.destinationViewController;22 23 //正向传数据24 secondVC.information = self.firstTextField.text;25 26 //设置代理27 secondVC.delegate = self;28 29 }30 }31 32 #pragma mark - 33 //反向接受信息34 -(void)FinishedInformation:(SecondViewController *)secondVC andinfo:(NSString *)infos35 {36 self.firstTextField.text = infos;37 }38 @end
SecondViewController控制器关联的SeconViewController类
1 #import "SecondViewController.h" 2 3 @interface SecondViewController () 4 @property (weak, nonatomic) IBOutlet UITextField *secondTextField; 5 6 @end 7 8 @implementation SecondViewController 9 //返回时的触发事件10 - (IBAction)returnClicked:(UIBarButtonItem *)sender11 {12 //反向传递数据13 [self.delegate FinishedInformation:self andinfo:self.secondTextField.text];14 15 //关闭模态窗口16 [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];17 //[self dismissViewControllerAnimated:YES completion:nil];18 }19 20 - (void)viewDidLoad {21 [super viewDidLoad];22 23 // 显示文本框内容(接受传递过来的数据)24 self.secondTextField.text = self.information;25 }26 27 @end