ios学习--Storyboard

转载 2012年03月23日 17:13:57
相信你也和我一样有过这样的经历,如果在一个xib文件上要放置多个view的,在XCode里面去修改控件位置、设置属性都不是一个太舒服的体验,特别是多个view重叠的时候,nib文件看上起就完全没有美感可言了。当然,一个xib文件放太多的view并不是一种很好的设计模式,但是,我相信我们都希望Xcode能够做些改进。这回,apple就在iOS5下推出了Storyboard,给出了一个不错的解决方案。


首先,谈谈相信你也和我一样有过这样的经历,如果在一个xib文件上要放置多个view的,在XCode里面去修改控件位置、设置属性都不是一个太舒服的体验,特别是多个view重叠的时候,nib文件看上起就完全没有美感可言了。当然,一个xib文件放太多的view并不是一种很好的设计模式,但是,我相信我们都希望Xcode能够做些改进。这回,apple就在iOS5下推出了Storyboard,给出了一个不错的解决方案。


首先,谈谈Storyboard的作用。


以往,我们通常是一个nib文件对应一个视图控制器,即应用的每一个场景通常有一个nib文件。Storyboard的最大作用就是把所有的nib文件组织起来,放在一个文件里面,交MainStoryBoard.storyboard,同时提供了在不同的视图控制器间切换的灵活方法。


这是,你可能会提出一个问题,它的性能怎么样,毕竟,应用在运行过程中一次加载所有的nib文件,对内存可能是一个很大的压力,很多情况下这甚至是不可能扼事。Take it easy, apple的工程师已经考虑的了,Xcode在实际编译时,仍然会把Storyboard里面的文件分开,程序在运行过程中会根据需要加载。同时,这一切对开发者来说都是透明的,我们只需要在Storyboard中做好设计就行了,其他不用管!


其次,是关于scene的概念,Storyboard中的每一个视图控制器都管理着一个scene(场景),对于iPhone应用来说,屏幕上只能显示一个scene,但对于iPad应用来说,则可以同时显示多个scene。


使用Storyboard的一个主要问题是如何在多个scene之间传递数据?当然方式有很多中,但Apple推荐的方式是这样的:


假设controllerA有一个到controllerbB的segue,即controllerA->controllerB,可在controllerA中利用重写-[UIViewController prepareForSegue:sender:]的方式,将数据传递到controllerB中;如果要将数据从controllerB传回controllerA,则可以利用delegate的方式,即在controllerB中定义一个delegate,在controllerA中去实现这个delegate,从而实现controllerB->controllerA。可能有点饶,具体可以看看下面参考链接的第二篇文章,讲得很清楚,还有一个例子。

的作用。


以往,我们通常是一个nib文件对应一个视图控制器,即应用的每一个场景通常有一个nib文件。Storyboard的最大作用就是把所有的nib文件组织起来,放在一个文件里面,交MainStoryBoard.storyboard,同时提供了在不同的视图控制器间切换的灵活方法。


这是,你可能会提出一个问题,它的性能怎么样,毕竟,应用在运行过程中一次加载所有的nib文件,对内存可能是一个很大的压力,很多情况下这甚至是不可能扼事。Take it easy, apple的工程师已经考虑的了,Xcode在实际编译时,仍然会把Storyboard里面的文件分开,程序在运行过程中会根据需要加载。同时,这一切对开发者来说都是透明的,我们只需要在Storyboard中做好设计就行了,其他不用管!


其次,是关于scene的概念,Storyboard中的每一个视图控制器都管理着一个scene(场景),对于iPhone应用来说,屏幕上只能显示一个scene,但对于iPad应用来说,则可以同时显示多个scene。


使用Storyboard的一个主要问题是如何在多个scene之间传递数据?当然方式有很多中,但Apple推荐的方式是这样的:


假设controllerA有一个到controllerbB的segue,即controllerA->controllerB,可在controllerA中利用重写-[UIViewController prepareForSegue:sender:]的方式,将数据传递到controllerB中;如果要将数据从controllerB传回controllerA,则可以利用delegate的方式,即在controllerB中定义一个delegate,在controllerA中去实现这个delegate,从而实现controllerB->controllerA。可能有点饶,具体可以看看下面参考链接的第二篇文章,讲得很清楚,还有一个例子。

相关文章推荐

iOS 9 学习系列: Storyboard References

如果你曾经使用 interface builder 创建过一个复杂、界面非常多的应用,你就会明白最后那些Storyboards 文件变的有多大。他会迅速变的无法管理,阻碍你的进度。自从引入 Story...

iOS学习3_UI开发之纯代码/storyboard/xib

由于做android开发时间比较长,按照android的经验,一般开发界面都是使用xml来写布局文件的,很少会完全使用代码来写布局,最近刚学iOS,发现好多都是直接使用代码来写布局的。看视频学习刚好看...

IOS基础学习(1)---Storyboard与xib跳转

Storyboard

iOS9学习系列:Storyboard References

如果你曾经使用 interface builder 创建过一个复杂、界面非常多的应用,你就会明白最后那些Storyboards 文件变的有多大。他会迅速变的无法管理,阻碍你的进度。自从引入 Story...

Xcode学习笔记---如何使用Xcode中的storyboard构建你的第一个IOS应用

本篇“第一个 iOS 应用”教程将向你介绍 iOS 应用开发中的“三个T”: Tools(工具)如何利用 Xcode 创建和管理工程。 Technologies(技术)如何创建能够响应用户...

iOS开发 - 第01篇 - UI基础 - 01 - 从Storyboard开始学习

1、UIViewController 2、IBAction & IBOutlet 3、App开发步骤 4、关闭键盘 5、私有扩展 6、域名 & 反向域名 7、移动...

IOS学习笔记32—使用Storyboard实现复杂界面

Storyboard是IOS5以后新增的内容,从名字上看,是以故事面板的形式来展现界面间的逻辑关系,Storyboard的功能很强大,今天就简要介绍Storyboard的基本使用,界面间的关系,以及如...

ios开发学习笔记⑤-因为我太傻逼所以不会用storyboard中的use size classes

新建一个项目时,不知道为何俺的storyboard显示的界面这么母鸡: 这种感觉,我不知道该说神马好。。。然后就上网搜了下解决办法 感谢corproal同学具体方法就是 点击 右侧面板的file...

iOS 5 Storyboard 学习之 控制Segue来跳转用户登录Login

iOS 5 Storyboard 学习之 控制Segue来跳转用户登录Login Storyboard用起来实在是太爽了,所以尝试着把iOS 4时代的代码迁移过来,其他的都还好,今天...

iOS UICollectionView学习之一,UICollectionView + storyboard 简单应用

iOS  UICollectionView + storyboard 的应用 1.新建一个项目Single View Application 2.选中项目中的storyboard  ,并且...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)