以前我也使用storyboard,但是都只是使用第一个ViewController,而后面的ViewController都是使用Xib或者代码重新绘制,而不会在storyboard中进行画图。最近的一个项目也许因为自己懒吧,不想创建很多的Xib,就查了一下storyboard的用法,发现还是挺不错的。
Xib可以直接拖拽控件,进行画图,storyboard也拥有相同的功能;除此之外,storyboard可以添加多个ViewController,并添加其对应的关系。例如可以在按钮上可以直接添加点击后push/present显示另一个ViewController,可以省略对应的代码编写。对应的操作就是按住ctrl键,然后选择空间,拉到对应VC上,可以选择是push还是modal形式弹出对应VC。
除了可以直接实现push和present以外,storyboard还可以更方便的管理页面之间的关系,比如navigationController,tabViewController的设置等,而不需要在代码中设置。
但是使用storyboard也有不方便的地方,那就是在协作编程时,如果创建相同的页面,就需要创建多次,而使用Xib的话就可以直接相互copy。当然如果同一个人的两个界面,是可以在storyboard中直接进行copy的。
下面说一下如果使用了storyboard,要注意的一些东西。我觉得主要有三点:
- 在storyboard中要对ViewController进行storyIdentifier的设置;这个设置保证了你可以在代码中获取到对应的ViewController,所以一定要设置;
在创建ViewController的时候,不能使用
[[UIViewController alloc] init]
,而要从storyboard中获取对应的ViewController。12UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];UIViewController *viewControlelr = [storyBoard instantiateViewControllerWithIdentifier:@"ViewController"];这样两句代码就可以获取到Main.stroyboard中storyIdentifier为“ViewController”的UIViewController了。
- 使用storyboard创建ViewController不会调用init方法,而是会调用initWithCoder方法。
最后就越是一个提醒storyboard可以创建多个,千万不要因为系统默认创建了一个,就傻乎乎的只使用一个,那样在协作工作时真的会变傻眼的。
关于storyboard其实我也只是简单的有一些了解,就说这么多吧,希望以后能够有更多的了解吧。