两个重要概念:
1,Storyboard中称之为scene,可以看作是viewcontroller
2,Segue时一个配置好的跳转,包含以下信息:
-segue的标识符;
-源viewcontroller
-目的viewcontroller;
跳转的3个关键步骤:
1,跳转的三种方法
-可以关联到一个按钮按下后跳转到下个页面:只有通过storyboard中拖拽就可以完成,一行代码都不需要写。
-custome segue:可以在手动控制,当满足条件后进行调用跳转;
-直接使用scene的标识符进行调转,非常类似以前使用的push viewcontroller;
//关联按钮进行跳转不需要写代码
//手动调用 segue
- (IBAction)manualBtnPressed:(id)sender
{
[self performSegueWithIdentifier:@"CUSTOME_TRIGGER" sender:nil];
}
//传统方式
- (IBAction)traditionalBtnPressed:(id)sender
{
TextViewController *dest = [self.storyboard instantiateViewControllerWithIdentifier:@"TextViewController"];
[self.navigationController pushViewController:dest animated:YES];
}
2,页面赋值:
实际上在每个页面跳转前,都会调用到prepareForSegue,就像每个viewcontroller都会调用 viewwillload;这就是给页面赋值的时机;
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"BTN_TRIGGER"]) {
NSLog(@"BTN_TRIGGER");
}
else if([segue.identifier isEqualToString:@"CUSTOME_TRIGGER"])
{
NSLog(@"CUSTOME_TRIGGER");
}
else
{
NSLog(@"NOT_DEFINED");
}
}
3,页面返回的两种方法:
方法一:非常怪异的通过在storyboard拖拽完成,同样是要和按钮的按下动作关联;
举个例子:SCENE_A ->SCENE_B后,从SCENE_B跳回来,那么现在SCENE_B里放个按钮;然后在SCENE_A里实现个函数类似如下,函数名称可以任意;然后将按钮与SCENE_A里的EXIT相关里,这时可以看到EXIT下有个done函数可以关联,对接上就可以了。
- (IBAction)done:(UIStoryboardSegue *)segue
{
NSLog(@"catch the exit action");
}
方法二:就是传统的push方法;
总结:
第一,只要明白storyboard里如何设置:跳转,赋值,跳回;那么storyboard也没什么可惧的;
第二,团队多人合作不适合使用storyboard,因为无法像解决code的冲突一样来解决storyboard的冲突;可以局部使用;一个工程可以包含多个storyboard。
这里是范例的下载链接:http://download.csdn.net/detail/smallhorse87/8660881