segue 和 代码 在页面跳转中的异同

首先是关于segue的使用。

视频参照 白胡子爷爷iOS教学第六集

首先先拉出两个UIViewController,然后定义他们的identifer

然后在第一个页面中拉取一个button,然后右键把button指向第二个页面

然后会有如下几个选项:

其中,上面提到的教学视频中提到的方法是使用push,然而现在这是一个Non-adaptive的segue,从iOS 8之后不推荐使用这个了。

使用这个push,ViewController必须是在UINavigationController中的,否则会出现错误。

这里建议使用show,ViewController在UINavigationController中时,会执行类似于

[self.navigationController pushViewController:secondViewController animated:YES];

的操作(效果是一样的);

否则,会执行类似于

[self presentViewController:secondViewController animated:YES completion:nil];

的操作。

可以用以下的方法,对下个页面进行属性的初始化 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if([segue.identifier isEqualToString:@""]) {
        NSLog(@"come to second view");
        SecondViewController *secondVC = (SecondViewController *)segue.destinationViewController;
        secondVC.info = @"....";//设置信息等
    }
}

但是,只能对属性进行初始化。因为这个方法的是存在于

-(void)awakeFromNib{}

之前,

-(void)viewDidLoad{} 

之后的。所以不能直接对UI控件进行初始化,只能通过设置属性,然后再在 -(void)viewDidLoad{} 中进行UI控件的初始化。

 同理,使用

SecondViewController *svc = [self.storyboard instantiateViewControllerWithIdentifier:@"secondViewNib"];
[self.navigationController pushViewController:svc animated:YES];

或者其他方法跳转时,也没有办法直接对UI控件进行初始化。

项目可见 git链接

 

 

posted @ 2015-10-27 10:18  Guava_kingfeng  阅读(566)  评论(0编辑  收藏  举报