zoukankan      html  css  js  c++  java
  • segue生命周期

    segue生命周期:
    概述:
    理解segue工作原理,需要理解一个segue对象的生命周期。segue对象是UIStoryboardSegue的实例或者是它的一个子类。所有iOS app都不能直接创建segue对象。
    segue对象通常是在跳转行为触发时被iOS系统创建。
    1. 目标控制器已经创建且实例化;
    2. segue对象被创建出来,并且segue的 initWithIdentifier:source:destination: 方法被调用。其中identifier是在Interface Builder设定的类型为字符串的唯一标识。
    source代表来源控制器,destination代表目标控制器;
    3. 来源控制器的 prepareForSegue:sender: 方法被调用;
    4. segue对象的 perform方法被调用。这个方法会将目标控制器呈现在屏幕上;
    5. segue对象被释放。

    实现一个自定义segue:
    为了实现一个自定义segue,需要创建一个继承自UIStoryboardSegue的对象,并实现2个方法,分别是:
    initWithIdentifier:source:destination://注意:需要调用父类构造方法,然后初始化子类的成员变量。
    perform//注:可加动画效果
    提醒:自定义segue中可以通过添加一些自定义属性来配置segue,但这仅限于在代码里面,在Interface Builder中是不能的。取而代之的是在来源控制器的
    prepareForSegue:sender:方法中进行自定义segue的配置。
    示例:
    -(void)perform{
    //在此添加动画
    [<#来源控制器#> presentModalViewController:<#目标控制器#> animated:NO];
    }
    segue触发时配置目标控制器:
    segue触发时,iOS系统会执行下面的动作:
    1. 实例化目标控制器
    2. 实例化一个新的segue对象,该对象包含被触发的segue的所有信息。
    3. 调用来源控制器的 prepareForSegue:sender: 方法,将新的segue对象和触发segue的对象(事件源,如按钮)传入该方法。
    4. 调用segue的perform方法,呈现目标控制器到屏幕。实际执行的效果依赖于segue的类型。例如:模态segue(modal segue)告诉来源控制器将目标控制器呈现到屏幕。
    5. 释放segue对象,segue生命周期结束。
    来源控制器的 prepareForSegue:sender: 方法可以任意地进行配置目标控制器的属性,包括代理(如果目标控制器有代理属性)。
    示例:
    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
      if([[segue identifier] isEqualToString:@"showDetails"]){
        TJQDetailsViewController *dvc=[segue destinationViewController];
        dvc.xxxx=self.datas[index];//数据顺传
    }
    if([[segue identifier] isEqualToString:@"showAddView"]){
      TJQAddViewController *addVc=[segue destinationViewController];
      addVc.delegate=self;//设置代理可以回传数据
      }
    }
    这个示例处理在Storyboard设定的2个不同的segue,通过segue的identifier属性值的不同来区分segue。

  • 相关阅读:
    常用模块
    python里面的奇技淫巧
    day_06、面向对象(二)
    day_06、面向对象
    day_06、递归、二分查找
    day_05、内置函数、匿名函数
    day_05、迭代器、生成器
    day_04、函数
    php调用webservice接口
    php在命令行输出进度条
  • 原文地址:https://www.cnblogs.com/amintan/p/4189207.html
Copyright © 2011-2022 走看看