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开发学习笔记(六)——多视图应用程序之StoryBoard实践

StoryBoard是iOS开发中重要的角色,可以实现可视化的程序页面切换逻辑控制。下面我们通过简单的例子来看看StoryBoard的使用方法。 我们新建一个SingleViewAp...

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

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

IOS深入学习(14)之Storyboard(故事板)

1 前言      2 详述     故事板(Storyboard)是一个IOS应用的用户界面的可视化表示,展示了很多屏幕之间的屏幕内容和连接。故事板构成了一系列场景,每个场景代表一个试图控制器和它的...

IOS学习之旅之6 控制旋转和新建storyboard进行布局拆分

简介:   1.旋转支持 2.新建storyboard进行布局 内容1: 废话少说,先来介绍第一个如何设置,由于接触的还少,所以暂时介绍掌握的简单方法,后续不断完善         ...

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

iOS  UICollectionView + storyboard 的应用 1.新建一个项目Single View Application 2.选中项目中的storyboard  ,并且...

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

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

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

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

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

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

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

1、UIViewController 2、IBAction & IBOutlet 3、App开发步骤 4、关闭键盘 5、私有扩展 6、域名 & 反向域名 7、移动...
  • NSRyan
  • NSRyan
  • 2016年05月10日 11:10
  • 824

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

本篇“第一个 iOS 应用”教程将向你介绍 iOS 应用开发中的“三个T”: Tools(工具)如何利用 Xcode 创建和管理工程。 Technologies(技术)如何创建能够响应用户...
  • SkewRain
  • SkewRain
  • 2013年10月27日 11:57
  • 13358
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios学习--Storyboard
举报原因:
原因补充:

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