介绍一种通过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文本框的值



IOS Segue 数据传递_ios