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。

  • 相关阅读:
    03 在百度地图上定位到指定位置
    01 如何将百度地图加入IOS应用程序?
    三个字理解委托机制
    iOS 应用程序打包、真机调试 方法
    在读iOS官方文档时,里面有很多你不懂的单词,不要担心
    用“大控件”与“大数据类型”思想来理解view Cotroller
    04 将当前位置用大头针标注到百度地图上
    02 使用百度地图获得当前位置的经纬度
    专注分享思考过程
    像孙正义为了练英语坚决不说日语一样。我也应该有坚决不看中文文档的心!
  • 原文地址:https://www.cnblogs.com/amintan/p/4189207.html
Copyright © 2011-2022 走看看