StoryBoard是IOS5的新特性之一,把程序View的设计弄成了绘画板(storyboard),它让枯燥程序猿们体验了下做一次画家。如果是第一次接触StoryBoard,想用StoryBoard做一个最简单的IOS程序,我建议点传送门,这是一篇不错的入门教程,有比较多的图。
原先是通过File's Owner载入视图资源,然后通过代码来完成viewController之间的关系,现在StoryBoard通过UIStoryboardSegue(我的翻译是续航器)完成viewController之间关系的构建,就是说原来的通过代码来控制的viewController之间的转换(replace、push、popover、modal),可以可视的通过StoryBoard的“一条线”(实际还是原来的代码完成,现在换成xcode来自动做)来自动完成。
刚开始使用StoryBoard总会觉得有些不好下手,只会用xcode自动创建的Segues,需要重新整理下StoryBoard的概念,StoryBoard不是一个完全解决方案,即不是必须要用StoryBoard替代所有xib,我可以在StoryBoard创建一个完全独立的viewController,也可以把仅把StoryBoard作为我程序的一部分来使用。说的直白点就是“混搭”,StoryBoard与Xib混搭,与代码(仅指创建ViewController的)混搭,完成xocde在开发效率与灵活性,上手难度与功能全面的平衡。
现在来说一个具体例子吧,比如我们先创建一个Tabbed Aplicaiton,这里包含两个viewController,一个first view controller ,一个second view controller ,我们想动态的创建第三个viewController , 即一点这个按钮,下面的tab变成三个选项,代码传送门。
要使用storyboard上一个独立的view controller,需要一下几个步骤
1 添加一个单独的view controller到storyboard
2 在view controller的inspector中完成identifier的设置
3 使用UIStoryboard class装载storyboard资源
4 使用[UIStoryboard instantiateViewControllerWithIdentifier:] 创建一个新的view controller实例
5 将view controller用到所需的地方
UIStoryboard * storyBoard;
UIViewController *vc;
//获得UITabBarController
tb = self.tabBarController;
viewControllers =[[NSMutableArray alloc] initWithArray: tb.viewControllers];
storyBoard = [UIStoryboard
storyboardWithName:@"MainStoryboard" bundle:nil];
vc = [storyBoard instantiateViewControllerWithIdentifier:@"ThirdViewController"];
总体的代码比较简单,所以没有做什么截图,主要分享这个解决问题的思路,还有疑问的童鞋留言吧,