`
stephen830
  • 浏览: 2962287 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Storyboard类介绍

 
阅读更多

 

Storyboard类介绍

 

 

 

 

原文地址:最新Xcode 4.3.2 下使用Storyboard和ARC开发iPhone4程序 03——Storyboard类及使用作者:浪友dans

 

 

一、Storyboard类介绍

    Storyboard是你可以用来定义用户界面的一种新的方式,像xib。与xib不同的是它可以同时管理多个ViewController,而且可以在Storyboard中配置ViewController 之间的跳转关系。

    如果主窗口只有一个view controller是作为story board的第一个界面,就需要勾选上 Initial Scene。

story board是xcode4.2新增的一个特性,它将原有工程中的所有xib文件集成在一起,用拖拽的方式建立起两个viewController之间的跳转关系,使得整个程序的UI跳转逻辑清楚明了。使用storyboard后,界面相关的代码编写将更少。

简单说一个storyboard是个什么东西。storyboard引入了两个概念:

scene: 一个场景,由一个viewController和相关的xib表示

      segue: ['seiɡwei] n. 继续,持续。用于连接scenes,segue有多种类型,包括:

                Push, Modal, Popover and more

                segue 也负责传递数据和返回数据。

整个程序的界面转换就是在scene之间切换。界面跳转关系,比如按哪个键跳到哪个界面,由segue来描述。segue也可以带数据,以便做数据传递。据说苹果的这种设计方案是抄的 Adobe的Flash,具体不得而知。

 

 

1、UIStoryboard类

此类继承于NSObject,共有三个方法,一个类方法,两个实例方法

1)得到一个StoryBoard Object对象:类方法

+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle*)storyboard

BundleOrNil;

// 也可以通过一个在storyboard中有scene的viewController中用self.storyBoard得到自己所在的storyboard对象。

2)接口

- (id)instantiateInitialViewController;

// 返回第一个界面(根视图所在界面),每个storyboard都必须有一个入口界面,特别是程序的主storyboard的第一个界面,就是程序的主界面。

 

- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier;

// storyboard中相应标识对应的界面。如果identifier不存在或者为nil,引发异常。

2、UIStoryboardSegue类,同样此类继承于NSObject

两个界面之间的转换,转换之前调用当前view controller的 prepareForSegue:sender: 函数(这里可以处理一些数据赋值之类).可以通过生成子类来自定义转换动画.

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

}

1)属性

@property(nonatomic, readonly) id destinationViewController  // (read-only)

@property (nonatomic, readonly) NSString *identifier    // (read-only)

@property(nonatomic, readonly) id sourceViewController   // (read-only)

2)初始化,此类公有一个实例方法

- (id)initWithIdentifier:(NSString *)identifier source:(UIViewController*)source destination:(UIViewController *)destination;

3、UIStoryboardPopoverSegue类。此类继承于UIStoryboardSegue : NSObject

此类只有一个属性:

@property(nonatomic, retain, readonly) UIPopoverController*popoverController;

4、动画

- (void)perform; // 子类重写来自定义转换动画

@property(nonatomic, retain, readonly) UIPopoverController*popoverController;

 

 

二、Storyboard使用

如果你是创建新项目,Xcode模版可以提供一个配置好的Storyboard供你使用。对于其它的应用,使用Storyboard的过程如下:

1、配置应用程序Info.plist文件

·         添加UIMainStoryboardFile ,值为storyboard的文件名。

·         删除原来的NSMainNibFile

2、像以前创建xib文件一样创建一个storyboard文件

3、配置 storyboard中的viewController

 

 

三、Storyboard的创建

  你可以用InterfaceBuilder 去为你的应用程序创建一个Stroyboard,一般来说一个应用使用一个 Storyboard就够了,但是如果你想创建多个也是可以的,只要你愿意。一个 Stroyboard应该至少含有一个ViewController。

  在iPhone中,对于每一个在Storyboard的ViewController都管理着一个scene,每个scene又管理着screen上的东东,但对于iPad来说,多个scene可以同时呈现在一个screen上。你可以从library中拖拽viewController到你的Storyboard上。

  当你想关联两个viewController时,你可以按着control键,用鼠标从一个ViewController中的button,table view cell…拖拽连接到另一个你想跳转到的ViewController,这样就创建了一个segue,不要忘记设置identifier哦。

 

 

四、 Scene之间的数据传递

  当你从当前 scene中触发一个segue的时候,系统会自动调用prepareForSegue:sender:这个方法。如果你想从一个界面切换到里另一个界面的时候传递数据,你应该override这个方法。

 

 

五、ViewController之间的跳转

如果在 Storyboard中,要实现当前的 ViewController和要跳转到另一个ViewController。分两种情况:

1、连接场景segue存在。如果在 Storyboard中当前的 ViewController和要跳转的ViewController之间的segue存在,则可以执行performSegueWithIdentifier:sender:这个方法实现跳转。

2、连接场景segue不存在。如果目标ViewController存在Storyboard中,但是没有segue。你可以通过UIStoryboard的instantiateViewControllerWithIdentifier:这个方法获取到它,然后再用你想要的方式实现跳转,如:压栈。

3、如果目标ViewController不存在在 Storyboard中,那就先去创建它吧。

 

 

六、小结

根据上面的UIStoryBoard类知道,可以简单的把storyboard当成以前的nib文件使用,只不过他是一个合集,读取文件用另一种自己的函数就行了。正常的使用当然是灵活运用UIStoryboardSegue。它可以关系两个controller,关系一个controller中的控件到另一个controller中,还可以自定义一些动画。



 

 

 

 

分享到:
评论

相关推荐

    iOS 5基础教程

    新版介绍强大的iOS 5操作系统,涵盖Xcode 4以来的新功能,其中最为引人注目的便是storyboard和iCloud,书中将以全新章节详细介绍。《iOS 5基础教程》所有项目均使用Xcode 4.2重新创建,让开发者全面感受Xcode 4带来...

    iOS开发技巧

    ARC (注:介绍iOS内存管理) 类和方法 Storyboard iOS中代码支持多国语言切换的实现 XCode项目改名 统计整个工程代码行数 iOS企业账号发布流程 Core Data本地缓存 多台Mac 共用

    ios-IOS项目分层.zip

    2.2.2 Tool(工具类)主要存放一些常用的类,此处Logger用于存放日志的封装帮助类,Reachability用于存放判断网络状态的帮助类; 2.2.3 Network(网络)这边主要用到YTKNetwork 是猿题库 iOS 研发团队基于 AFNetworking...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  《ASP.NET 4高级程序设计(第4版)》适合各层次的ASP.NET程序员阅读。 =================== 第一部分 核心概念 第1章 ASP.NET简介 1.1 ASP.NET的...

    MasonryExercise

    ##Demo介绍 本内容为本人学习使用 Masonry 的一个例子。 Masonry是一个轻量级的自动布局框架。 github: 其中使用在计算tableView的cell的高度的时候,也使用到了阳神的优化cell高度的一个工具类:UITableView+...

    ASP.NET4高级程序设计(第4版) 3/3

    另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  《ASP.NET 4高级程序设计(第4版)》适合各层次的ASP.NET程序员阅读。 作者简介 作者:(美)麦克唐纳 目录 第一部分 核心概念 第1章 ASP.NET简介 ...

    WPF自动隐藏的消息框的实例代码

    介绍:传统的确定,取消,OK,CANCAL之类的对话框太繁琐了,由于项目需要而诞生的仿手机式提示对话框。当然传统的对话框项目中也有,这里就不做介绍了。 出场和退场动画做得很简单,就用Blend随便鼓捣了一番,将就用...

    校园助手iOS端HutHelper-Open.zip

     │ ├── View:界面,xib或者storyboard之类的文件  │ ├── Supporting Files:一些支持文件  │ └── Controllers  │ ├── Main:主界面  │ ├── Login:登录界面  │ ├── ...

    DDR2Layout指导手册

    问题描述 在学习UIPageViewController的过程中,按照《【译】如何使用Storyboard创建UIPageViewController》编写引导页Demo,但是做完的效果和Demo效果... PCB layout Guide 2014年07月02日 17:27434KB下载 ...

    iOS应用开发中视图控件UIWindow的基本使用教程

    一、简单介绍 iPhone应用程序通常只有一个窗口,表示为一个UIWindow类的实例。应用程序在启动时(或者从nib文件进行装载)创建这个窗口,并往窗口中加入一或多个视图并显示出来。之后我们很少需要再次引用它。UIWindow...

Global site tag (gtag.js) - Google Analytics