iOS学习笔记5 - xib和Storyboard

写这篇的起因也是由于教材。在粗略地扫完Objective-C的教程后,就找了一本《Xcode 4 iOS Development Beginner’s Guide》来看。翻到第一个范例,对着范例开始照搬。做到“点击项目里的xib”文件的那一步时傻眼了。。。虾米?项目里没有xib文件?
 
最新版的XCode里默认在新建一个iOS项目时,会勾选使用storyboard的选项。如果勾选了这个选项,在iOS项目里就不会包含.xib文件,而是一个storyboard文件。如果不勾选这个选项的话,还是会按照老方法创建xib文件。
 
在storyboard出现之前,每个UIViewController都有一个对应的.xib文件。
 
storyboard是在iOS5 SDK中引入的。
一个storyboard通常是包含了N个screen的文件,表现出屏幕之间切换的“流”。如果要用理科生的术语来说,就是状态机吧。
 
参考这篇:http://stackoverflow.com/questions/9083759/what-are-the-benefits-of-using-storyboards-instead-of-xib-files-in-ios-programmi ,Storyboard是:
1. 包含所有Scene的容器(ViewController,Nav Controller,TabBar Controller等等)
2. 管理Scene之间的所有连接和切换(术语被称为Segue['segweɪ],只需要从一个View Controller使用Ctrl+拖动到另一个View Controller,就可以创建一个新的切换)
3. 管理Controller之间的通信
4. 从nib文件那里无法获得的应用“流” (xib就是没有编译的nib。xib在编译时会变成nib,用于部署。在IB(Interface Builder)3引入。xib相比nib的优点是一个flat的文件而非一个二进制文件,可以用来版本控制。)
5. 能减少文件总数
 
关于storyboard有一篇挺详细的文章:
 
里面提到Storyboard也有缺点:Storyboard编辑器不如IB强大。
如果讨厌Interface Builder,喜欢自己编程实现所有UI的(这是在说我么?),不太会喜欢Storyboard。Storyboard比较适合那种喜欢写越少代码越好的。
 
=============
顺便说一下,如果要将一个xib文件和一个viewcontroller类文件关联的话,可以用如下步骤:
1. 打开xib文件
2. 点击PlaceHolder里的File's Owner(插一句:我用的是英文版,所以术语都是用英文。以后也不会专门翻译为中文)
3. 点击右侧栏的第三个按钮,在"Identity Inspector"那里修改Custom Class的Class名
 
 
(P.S. XCode用全图形化的关联方式来处理这样ViewController与xib,以及ViewController上的各种元素和property及函数的对应。根据之前浅尝则止的经验,游戏引擎Unity3D也是如此。老实说我个人还是更喜欢VS的处理方式。。。让人感觉比较实在吧。
如果要查看那些图形化的操作做了些什么,可以右键点击xib文件,选择open as-》Source Code。可以看到其实背后还是用XML的方式来管理关联。不过一堆类似"1050106229","354080509"的reference字符串,显然根本不是用来给人类看的。。。)
posted @ 2013-04-29 01:03  Dem  阅读(2642)  评论(0编辑  收藏  举报