zoukankan      html  css  js  c++  java
  • iOS-UITableView(三)

    一、加载xib文件的两种方式
    1.方法一(NewsCell是xib文件的名称)
    NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"NewsCell" owner:nil options:nil];
    
    2.方法二
    UINib *nib = [UINib nibWithNibName:@"NewsCell" bundle:nil];
    NSArray *objects = [nib instantiateWithOwner:nil options:nil];
    
    二、设置cell的高度
    1.如果每一行cell的高度都是一样的,直接使用tableView的rowHeight属性设置cell的高度即可
    tableView.rowHeight = 80;
    
    2.如果每一行cell的高度不一定一样,应该用代理方法设置cell的高度
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // 返回indexPath这行对应cell的高度
        return 80;
    }
    
    三、UITableViewController
    1.UITableViewController内部默认会创建一个UITableView *tableView
    2.UITableViewController内部tableView的delegate(代理)和dataSource(数据源)就是这个UITableViewController
    3.UITableViewController内部tableView就是控制器的view
    
    四、自定义cell
    1.通过xib
    1> 一定要注意在xib的cell中设置重用标识(reuse identifier)
    
    2> 封装的步骤
    * 新建xib描述cell的样子---DealCell.xib
    * 新建UITableViewCell的子类---DealCell(封装xib内部的所有东西)
    * 修改xib中cell的类名(class)为DealCell
    * 在DealCell中拥有xib中的所有子控件(声明属性、进行连线)
    * 新建模型Deal,封装数据
    * 给DealCell增加模型属性
    @property (nonatomic, strong) Deal *deal;
    * 重写setDeal:方法,在这个方法中根据模型数据设置cell内部子控件的属性
    * 提供一个类方法,返回从xib中创建好的cell对象
    * 给xib中的cell添加一个重用标识(比如deal),提供一个类方法,返回重用标识
    * 提供一个类方法,返回cell的高度
    
    3> 使用cell
    * 设置每一行cell的高度
    * 利用重用标识去缓存池取得cell
    * 如果缓存池没有cell,创建cell
    * 传递模型给cell
    
    2.通过代码
    1> 新建一个UITableViewCell的子类---WeiboCell
    
    2> 在创建cell的时候(initWithStyle:reuseIdentifier:方法中)添加cell内部需要使用的子控件
    (注意:只管创建添加子控件,先不要去管子控件的位置和尺寸)
    
    3> 新建一个模型类---Weibo,增加对应的数据属性
    
    4> 给WeiboCell增加一个Weibo模型属性,在拿到Weibo模型数据的同时设置子控件的属性
    
    5> 重写setWeibo:方法,在这里面取出Weibo模型的数据显示到子控件上
    
    五、UITableView方法补充
    1.如果tableView通过@"Cell"这个标志去缓存池中没有取到可循环利用的Cell,就会加载MyCell1.xib文件来创建cell
    [self.tableView registerNib:[UINib nibWithNibName:@"MyCell1" bundle:nil] forCellReuseIdentifier:@"Cell"];
    
    2.如果tableView通过@"cell2"这个标志去缓存池中没有取到可循环利用的Cell,就会创建MyCell2对象作为cell
    [self.tableView registerClass:[MyCell2 class] forCellReuseIdentifier:@"cell2"];
  • 相关阅读:
    jps, jstack, jmap, jhat, jstat
    SpringBoot工程可执行jar修改为可执行war
    SCP后台运行
    frp实现内网远程访问
    SpringBoot项目执行脚本, 自动拉取最新代码并重启
    文本聚合函数(wm_concat, listagg, group_concat, string_agg)
    linux磁盘空间占用分析
    jdbc打印sql语句-p6spy配置
    Linux系统的buff/cache缓存清理脚本
    环境变量及免密登录
  • 原文地址:https://www.cnblogs.com/DarbyCJ/p/3655536.html
Copyright © 2011-2022 走看看