UINavigationController介绍:12-顺传数据(源VC->目标VC)
在使用导航控制器进行子控制器切换时,经常会涉及到控制器之间的数据传递,例如在微信App中,当我们从联系人列表中选中某个联系人后,就会打开与该联系人的对话界面,此时就涉及到把选中的联系人信息传递到新打开的对话控制器中。
概念定义
在导航控制器管理的子控制器之间传递数据的过程中,有如下几个概念需要首先明确下:
源控制器:调用pushViewController:方法的控制器;
目标控制器:调用pushViewController:方法后,展示出来的新控制器;
顺传:源控制器向目标控制器传递数据;
逆传:目标控制器向源控制器传递数据。
顺传
顺传数据的核心思路是在目标控制中,新增一个数据模型的属性,在执行pushViewController:方法之前,把源控制器中的数据传递给该属性。一般情况下包括如下两个步骤:
- 在目标控制器中(DestinationViewController.h)新增属性,用于接收数据;
- 在源控制器(SourceViewController.m)中,初始化目标控制器,给目标控制器的新增属性赋值,并跳转到目标控制器
示例代码
下方的示例代码中,实现了数据从源控制器向目标控制器顺传的过程。
- 首先,在目标控制器中(DestinationViewController.h)新增属性dataText,用于接收源控制器传递的字符串对象
@interface DestinationViewController : UIViewController
@property (nonatomic,copy) NSString *dataText;
@end
- 在源控制器(SourceViewController.m)中,初始化目标控制器DestinationViewController,给目标控制器的dataText属性赋值,并跳转到目标控制器
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
DestinationViewController *descVC = [[DestinationViewController alloc] init];
descVC.view.backgroundColor = [UIColor redColor];
descVC.navigationItem.title = @"目标控制器";
//跳转前传递数据
descVC.dataText = @"99iOS.com";
//控制器跳转
[self.navigationController pushViewController:descVC animated:YES];
}
- 在目标控制器中,打印传递过来的数据
-(void)viewDidAppear:(BOOL)animated{
//打印源控制器传递过来的数据
NSLog(@"源控制器传递的数据:%@",self.dataText);
}
思考:能否在viewDidLoad方法中打印传递过来的数据?
https://github.com/99ios/9.2.12
文章发布时间为: October 28th , 2016 at 06:16 pm
最后编辑时间为: September 15th , 2017 at 02:51 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 15th , 2017 at 02:51 am
本文由 99ios 创作,转载请注明出处