介绍一种通过prepareForSegue:方法传递数据的方法,由于默认视图对应的源代码文件是ViewController.m,所以在该文件中实现prepareForSegue:方法,代码如下:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // 判断启动的目标View是否为MyViewController if([[segue destinationViewController] class] == [MyViewController class]) { MyViewController *myView = [segue destinationViewController]; [myView setText:@"李宁"]; } }
当导航到MyViewController之前(已经创建了MyViewController对象,但还没调用 MyViewController.viewDidLoad方法)系统会调用prepareForSegue:方法。并且可以通过 [seguedestinationViewController]方法获取目标视图的对象,并调用视图对象中的方法设置任何的参数值。这里在 MyViewController.m中实现了setText方法,用于设置mText变量,然后在 MyViewController.viewDidLoad方法中通过mText变量值设置UITextField控件的显示文本。
除了可以通过[seguedestinationViewController]方法判断目标视图外,还可以使用下面的代码。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([segue.identifier isEqualToString:@"myview"]) { MyViewController *myView = [segue destinationViewController]; [myView setText:@"李宁"]; } }
其中segue.identifier表示导航连接的标识,也就是单击图6中新视图和默认视图直接连线中间的圆圈后,在右侧的Identifier文本框的值