转载

ViewController Programming Guide 笔记(二)

这是 ViewController Programming Guide 中 Presentations and Transitions 下的一部分,稍后顺序可能会调整

Using Segues

使用 segues 来定义 storyboard 文件中两个 VC 之间的过渡,一个 segues 总是 present VC,unwind segue 用来 dismiss VC

一、Creating a Segue Between View Controllers

创建一个 segue,可以通过 Control-click 的方式

某些元素支持 mulitple sueges

segue 的类型有以下几种:

| Segue type | Behavior | | :-------------------------:|:---------------------| | Show (Push) | 使用 showViewController:sender: 方法来显示一个新的 VC,对于大部分 VC,这个seguge 是 model 显示,但也有一部分 VC 会覆盖此方法提供自己的实现,比如 navigation controller,UIKit 使用 targetViewControllerForAction:sender: 来定位 source view controller | | Show Detail (Replace) | 展示新 VC 通常用 showDetailViewController:sender: 该 segue 通常仅仅被植入在 UISplitViewController 对象中,通过这个 segue,split view controller 替换他的 second childVC(detail VC),大部分是 modal 形式| | Present Modally | 最基本的模态展示 |

| Present as Popover | 在 horizontally regular 环境下,VC 出现在 popover 中,在 horizontally compact 环境下,还是全屏 modal 展示|

| Tables | Are | Cool | | ------------- |:-------------:| -----:| | col 3 is | right-aligned | $1600 | | col 2 is | centered | $12 | | zebra stripes |

are neat

| $1 |

创建完 segue,你可以指定 identifier,这些 identifier 包含在 UIStoryboardSegue 对象中

二、Modifying a Segue’s Behavior at Runtime

ViewController Programming Guide 笔记(二)

如图,在 segue 过程中,有两个地方,你可以做一些事情

  • shouldPerformSegueWithIdentifier:sender: 你可以返回 NO,阻止 segue 发生
  • prepareForSegue:sender: 你可以从 sourceVC 为 destionationVC 准备些数据

三、Creating an Unwind Segue

  1. 放置 DismissButton 在 PresentedVC 上
  2. 将 Unwind 方法 写在 PresentingVC 中
  3. Control-click the button ,然后拖到 Exit 上

四、Initiating a Segue Programmatically

编程的方式主要通过 performSegueWithIdentifier:sender: 方法来实现 segue

五、Creating a Custom Segue

  1. Seuge 的生命周期:

    Seuge 对象是 UIStoryboardSegue 类的实例或子类,你不能直接创建,UIKit 会在 seuge 被触发时创建他们,以下是具体过程:

    • 创建 PresentedVC
    • Segue 的 initWithIdentifier:source:destination: 方法被调用
    • PresentingVC 的 prepareForSegue:sender: 方法被调用
    • Segue 的 perform 被调用,执行过渡
    • 关于 segue 的引用被释放
  2. 实现自定义 Seuge

    实现自定义的 Seuge 主要是创建 UIStoryboardSegue 的子类,实现以下方法:

    • 重载 initWithIdentifier:source:destination: 使用自定义的 seuge 对象,记得调用 super
    • 实现 perform 方法,并在其中设置你的转场动画

    如果,你为 seuge 添加了一些属性,在过渡开始前,你可以在 prepareForSegue:sender: 里设置他们

- (void)perform {     // Add your own animation code here.      [[self sourceViewController] presentViewController:[self destinationViewController] animated:NO completion:nil]; } 
-EOF-
正文到此结束
Loading...