首先是关于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链接
时间: 2024-10-13 17:34:59