zoukankan      html  css  js  c++  java
  • [iOS基础控件

    A.概念
    storyboard中的跳转事件连线,都是一个UIStoryboardSegue对象(Segue)
    DA737EED-B13F-459B-88BD-D6BD0E637BB1
     
    来源控制器
         触发控制器
    目标控制器
         跳转到的控制器
     
    17D21C75-B95D-4FD1-A4F9-CF199165146F
     
    Segue的属性:
    每一个Segue对象,都有3个属性
    唯一标识
    @property (nonatomic, readonly) NSString *identifier;
    来源控制器
    @property (nonatomic, readonly) id sourceViewController;
    目标控制器
    @property (nonatomic, readonly) id destinationViewController;
     
    Image(248)
     
    B.种类
    1.自动型
    action segue
    使用控件连线
    不需要进行条件判断的跳转(比如按钮)
    D369BA63-5048-4B4A-8815-A7390A87C329
     
    设置方法:按Control,拖线从控件(开关、按钮等)到目标控制器
     
    2.手动型 Manual
    manual segue
    使用控制器连线
    需要进行一定的条件判断的跳转(使用代码)
    EB85687E-FCF4-4312-92D6-F6A919AA6D65
     
    手动的Segue需要设置标识,在制定的时候在来源控制器执行Segue
    Image(249)
     
    sample:
    1         // 根据Segue ID 执行跳转
    2         [self performSegueWithIdentifier:@"contactList" sender:nil];
     
    3.传递数据
    在Segue准备好,跳转之前执行来源控制器的方法,使用成员属性传递数据
    prepareForSegue: sender:
    sample:
     1 #pragma mark - Segue相关
     2 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     3     // 取得目标控制器
     4     id controller = segue.destinationViewController;
     5    
     6     // 判断跳转目标
     7     if ([controller isKindOfClass:[AddViewController class]]) {
     8         // 如果是“添加联系人”
     9         AddViewController *addViewController = controller;
    10         addViewController.delegate = self;
    11     }
    12    
    13     if ([controller isKindOfClass:[EditViewController class]]) {
    14         // 如果是“查看/编辑联系人”
    15         EditViewController *editViewController = controller;
    16        
    17         // 取出数据
    18         NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    19         editViewController.contact = self.contacts[indexPath.row];
    20        
    21         // 设置代理
    22         editViewController.delegate = self;
    23     }
    24   
    25 }
     
    控制器之间的数据传递主要有2种情况:顺传和逆传
    顺传
    控制器的跳转方向: A  C
    数据的传递方向    : A  C
    数据的传递方式    :  在A的prepareForSegue:sender:方法中根据segue参数取得destinationViewController, 也就是控制器C, 直接给控制器C传递数据
    (要在C的viewDidLoad方法中取得数据,来赋值给界面上的UI控件)
     
    逆传
    控制器的跳转方向: A  C
    数据的传递方向    : C  A
    数据的传递方式    :  让A成为C的代理, 在C中调用A的代理方法,通过代理方法的参数传递数据给A
     
    Image(250)
     
  • 相关阅读:
    数据采集,微软控件分页问题的处理
    固定表头和列头
    字符串转时间类型
    js url加密解密
    Chosen—jquery选择框插件
    拉动滚动条加载数据
    webservse导出excel和word
    文本框与autocomplete结合使用
    jQuery的Select操作集合
    (转)常用算法大全-贪婪算法
  • 原文地址:https://www.cnblogs.com/hellovoidworld/p/4187887.html
Copyright © 2011-2022 走看看