Storyboard
2016-01-30 10:23
120 查看
1. StoryBoard到底是什么东西?
如上图所示,就是我们一直在说的Storyboard,创建项目的时候选择Single View Application
模板,我们就可以默认得到一个控制器类ViewController.h/.m和一个Main.storyboard文件,Main.storyboard文件就是的故事板(Storyboard),在这里可以操作我们的几乎所有的控制器。
Storyboard中存在的不仅仅是View那么简单的概念,而是放置了一个ViewController的概念。也就是说,我们在可视化页面中,除了可以在页面中操作视图之外,我们还可以在页面中操作控制器的一些设置等等。
Storyboard就是把很多的Xib文件添加到了一个文件中,让我们可以在一个文件中操作所有视图,更加的方便和快捷。同时,我们还可以设置页面之间的联系。展示程序页面之间的逻辑关系
不同的是,Xib中代表的仅仅是View,Storyboard中代表的是控制器
2. StoryBoard与xib相比较的优势与劣势?
Xib的和纯代码开发相比起来优势已经很明显了:方便、快速、直观。。。可以帮我们提高工作效率,节省开发时间。Storyboard和xib比起来,除了拥有Xib拥有的优势外,它还有自己的优势。
方便、快速、直观
显示各个控制器之间的顺序关系
快速设置控制器的一些属性
3. 如何使用以及单独创建Storyboard文件
cmd + N,选择User Interface->StoryBoard创建之后如何让程序去加载呢,在这里设置下:选中项目->General->Main Interface,在Main Interface输入storyboard文件名
设置好了之后,程序启动后就会自动加载我们的Stroyboard文件了
4. Storyboard中那么多控制器,哪个是根视图控制器?
Storyboard中可以包含很多的视图控制器,那到底哪个是根视图控制器呢?注意,这里不需要我们去写代码声明。只需要勾选就OK了。视图控制器左侧的小箭头就表示当前的为根视图控制器,设置的位置就是右侧Is Initial View Controller的复选框。
小箭头也可以直接拖动,可以从一个控制器拖到另一个控制器上,这样就更改了根视图控制器。
5. 添加新的视图控制器和关联
从右下角直接找到View Controller拖到Stroyboard,这样就创建了一个视图控制器,但是需要和ViewController.h/.m进行关联,
在Class中输入对应的控制器的名称,这样就进行了关联,怎么样,比Xib简单吧。
6. 使用Segue
Segue,就是我们在storyboard中看到的那些线,相对应的类是UIStoryboardSegue,segue的作用就是可以表示出控制器之间的跳转关系,并且,是可以直接实现跳转的。在一个控制器中拖入一个UIButton,然后按住Control按钮,从button上拖到另外一个控制器中,
松手后可以看到弹出这样一个HUD:
最下面的两个,push和modal大家都认识,一个是导航控制器的跳转页面,另一个是模态的效果。大家也可以发现,已经被deprecated掉了,所以我们不应该再去使用。
解释下最新的:
show: 相当于push,但是有一个好处:如果没有导航控制器,跳转的方式就是模态,如果存在导航控制器,就是push的效果
show detail: 相当于modal
我们选择show,这样可以看到一条线:
这条线就是segue,代表了转场。(segue的使用后期再做详细介绍)
这样搞定之后,我们就实现了页面之间的跳转,都不需要写代码。
7. 设置代理
如果我们添加了tableView到视图中,我们不需要写代码,可以直接设置代理:按住Control,从tableView拖到对应的控制器上,松手后会看到:
可以看到dataSource和delegate,把两个都选中就代表我们设置了tableView的代理为当前的视图控制器。选中的代理项会在前面出现小点点,就比如dataSource
8. 给控制器添加导航控制器或者标签控制器
选中一个控制器,然后去菜单栏:Editor->Embed In->Navigation Controller我们选中控制器可以将当前控制器装载到控制器中,当我们选中几个View的时候,我们也可以装载到View或者ScrollView中,非常的方便。
9. 这个东西真棒
Storyboard除了可以提高我们的开发效率之外,后期介绍了Auto Layout之后,你会爱上Storyboard的。建议大家在个人项目中使用Storyboard,
团队项目的时候使用Xib,
总之就是尽量使用可视化编程,提高我们的工作效率。
相关文章推荐
- mysql导入与导出
- 一个物体多个标签的问题
- 面试必备:String,StringBuffer,StringBuilder区别
- Android 中的 Service 全面总结
- linux安装mysql-c语言开发库
- [leetcode]Missing Number
- perl weixin webwxbatchgetcontact 接口
- __asm__ __volatile__内嵌汇编用法简述
- 网线的两种线序
- 推荐两个界面原型设计工具--GUIDesignStudio 和 Mockups For Desktop
- HashEncode哈希加密
- ubuntu下Phalcon PHP框架搭建过程
- mybatis实战教程(mybatis in action),mybatis入门到精通
- poj 1459 最大流增广路算法
- eclipse ee设置tomcat和工程部署的目录
- 使用Genymotion安装APK出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE的解决办法
- sql的循环,判断,跳转语句
- 模运算性质及应用
- Linux:hping高级主机扫描
- Endnote 导出文献到Excel