ViewController Programming Guide 笔记(五)

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,你可以指定 identifier,这些 identifier 包含在 UIStoryboardSegue 对象中

二、Modifying a Segue’s Behavior at Runtime

如图,在 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-

如果感觉此文对你有帮助,请随意打赏支持作者 😘

chengway

认清生活真相之后依然热爱它!

Subscribe to Talk is cheap, Show me the world!

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!