xcode
mac
我们的准备工作,新建两个控制器,viewcontroller和passvaluecontroller,现在点击viewcontroller中的按钮跳转到passvaluecontroller。
viewcontroller中新建一个button,点击button跳转到passvaluecontroller UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem]; btn.frame = CGRectMake(0, 0, 100, 50); [btn setTitle:@'aa' forState:UIControlStateNormal]; [btn addTarget:self action:@selector(handel) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn];
passvaluecontroller中的界面布局如图,点击返回按钮,返回到viewcontroller。
从后往前传值,就是点击passvaluecontroller中的按钮返回的时候,把值传给第一个界面viewcontroller。现在就在passvaluecontroller中,写代理。首先我们需要声明协议。让代理人实现的一些方法。在passvaluecontroller.h文件上面声明协议@protocol PassValueViewControllerDelegate
声明完了代理属性,基本可以进行传值操作了。进行传值操作,首先在passvaluecontroller.m中页面消失的方法中,写把值传到第一个界面的方法。oa方法就是传值方法,我传的值是字符串@“传值”。passvaluecontroller中的方法就这么愉快地写完了。现再到viewcontroller中接收passvaluecontroller传过来的值。
首先引用passvaluecontroller文件#import 'PassValueViewController.h'然后服从协议@interface ViewController ()
服从了协议,ViewController就是passvaluecontroller的代理了。需要指定passvaluecontroller的代理为ViewController。我们在哪指定ViewController为代理呢,这一点很关键。再跳转到第一个界面那,这个时机算是比较好的。- (void)handel { PassValueViewController *pass = [[PassValueViewController alloc] initWithNibName:@'PassValueViewController' bundle:nil]; //代理实现 pass.delegate = self; [self presentViewController:pass animated:YES completion:nil];}
指定了代理,来实现 协议中的方法,并接收从PassValueViewController界面传过来的值。- (void)passValue:(NSString *)value { NSLog(@'得到传的值为%@', value);}
这样就可以啦。