zoukankan      html  css  js  c++  java
  • 加载自定义 cell 的 XIB 文件 的两种方式

    自定义单元格如果是使用 IB  方式创建的,则需要手动加载,因为 XIB 上的 cell 不会自动加载

    第一种:使用应用程序束

    应用程序束 NSBundle:获得工程中所有的资源的路径,相当于当前工程的目录。

    //获得指定的xib中所有的视图
    NSArray * array =  [[NSBundle mainBundle] loadNibNamed:@"ZYTableViewCell" owner:nil options:nil];

    注意通过应用程序束获得返回值是 XIB 文件中所有的顶层视图,以数组的形式返回;

    所以需要在数组中找到你需要的视图。

    for (id object in array)
    {
        //如果object 是 ZYTableViewCell类型,就找到了
        if ( [object isKindOfClass:[ZYTableViewCell class]])
        {
           cell = object ;
           break ;
        }
    }//通过 isKindOfClass 方法可以知道是不是想要的类型

    第二种:注册 XIB

    //注册xib;找不到重用的cell的时候,系统可以根据注册的cell去创建
    UINib * nib = [UINib nibWithNibName:@"ZYTableViewCell" bundle:nil];
    [tableView registerNib:nib forCellReuseIdentifier:@"Cell”];  //在注册的时候先写这句,然后逆向获得 nib 对象,即根据需要获得所需参数,这里的 bundle 处可填写 nil ,因为这是在主方法里, 否则可通过下面的方法获得 nib 对象。
    NSBundle *bundle = [NSBundle mainBundle];
    UINib *nib = [UINib nibWithNibName:@"ZYTableViewCell" bundle:bundle];

    第二种方法适用于使用下面这句代码获得重用的 cell

     ZYTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];  

    示例:

    -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        ZYTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
        if (!cell)
        {
            //xib 上 cell 不会自动加载 ;
            
            //应用程序束:获得工程中所有的资源的路径
            //获得指定的 xib 中所有的视图
            NSArray * array =  [[NSBundle mainBundle]loadNibNamed:@"ZYTableViewCell" owner:nil options:nil];
            //从数组中找到对应的 cell ( xib 上只有 cell 一个视图)
            //  cell = [array lastObject]; 
            for (id object in array)
            {
                //如果 object 是 ZYTableViewCell 类型,就找到了
                if ( [object isKindOfClass:[ZYTableViewCell class]])
                {
                    cell = object ;
                    break ;
                }
            }
        }
        return cell;
    }
  • 相关阅读:
    NLTK和Stanford NLP两个工具的安装配置
    对传统虚拟机软件的相关调研
    FasterRCNN目标检测实践纪实
    MySQL数据库远程连接的配置方案
    Windows10电脑安装macOS Mojave系统的方法(最新版系统,含超详细步骤截图)
    用Hash Table(哈希散列表)实现统计文本每个单词重复次数(频率)
    Windows10远程桌面连接配置
    dwz局部表格分页
    dwz中combox的value问题
    【转帖】C++编译原理 资料
  • 原文地址:https://www.cnblogs.com/hyhl23/p/4216393.html
Copyright © 2011-2022 走看看