zoukankan      html  css  js  c++  java
  • iOS常用控件-UITableViewCell

    一、 封装cell:

    1、加载xib文件的两种方式

      <方式1> (NewsCell是xib文件的名称)
        NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"NewsCell" owner:nil options:nil];

      <方式2>
        UINib *nib = [UINib nibWithNibNamed:@"NewsCell" bundle:nil];
        NSArry *objects = [nib instantiateWithOwner:nil options:nil];

     

    二、设置cell的高度

      1. 如果每一行的cell高度都是一样,应该用代理方法设置cell的高度
      - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

      {

          // 如果每一行的高度一样的话,可以在viewDidLoad中设置: self.tableView.rowHeight = 80;
            // 返回indexPath这行对应的cell的高度
            return 80;
      }

    ====================================================================

    三、自定义cell两种方式:
    
      方式一、通过xib描述cell:
        1> 一定要注意在xib的cell中设置重用标识 (reuse identifier)
    
        2> 封装的步骤
          新建xib描述cell的样子——DealCell.xib       新建 UITableViewCell 的子类 (定义一个类DealCell ,继承自UITableViewCell )——DealCell (封装xib内部的所有东西)       修改 xib 中 cell 的类名 (
    class) 为 DealCell。       在 DealCell 中拥有xib中的所有的子控件 (声明属性、进行连线) 。       新建模型Deal (定义一个类 Deal ,继承自NSObject ),封装数据。       给DealCell增加模型属性 (到时候才能从Deal中把从服务器上拿过来的数据拿到xib的控件中来显示)
          在DealCell中:         @class Deal;         @interface DealCell:UITableViewCell         @property (nonatomic, weak) IBOutlet UIImageView
    *iconView;         @property (nonatomic, weak) IBOutlet UIImageView *dealNewView;         @property (nonatomic, weak) IBOutlet UILabel *titleLabel;         @property (nonatomic, weak) IBOutlet UILabel *buyLabel;         @property (nonatomic, weak) IBOutlet UILabel *priceLabel;         @property (nonatomic, strong) Deal *deal;         + (id)dealCell;         + (NSString *) ID;         #end
          在DealCell中重写setDeal方法(在这个方法中根据模型数据设置cell内部子控件的属性):         #import “DealCell.h”         #import “Deal.h”         @implementation DealCell
            
    - (void)setDeal:(Deal *)deal         {         _deal = deal;          // 1. 标题          _titleLabel.text = deal.title;          // 2. 购买人数         _buyLabel.text = [NSString stringWithFormat:@“购买:%d”, deal.buy ];         // 3. 价格          _priceLabel.text = [NSString stringWithFormat:@“价格:%f”, deal.price ];          // 4. 头像          _iconView.image = [UIImage imageNamed:deal.icon];          // 5. 是否显示最新          _newView.hidden = ! deal.isNew;          }
            
    + ()dealCell         {          return [[NSBundle mainBundle] loadNibNamed:@“DealCell” owner:nil options:nil ] [0];         }
            
    + (NSString *) ID         {          return @“deal”;         }         @end
            提供一个类方法,返回从xib中创建好的cell对象。         给xib中的cell添加一个重用标识 (比如deal),再提供一个类方法返回一个重用标识。         提供一个类方法,返回cell的高度。       
    3> 使用cell       设置每一行cell的高度       利用重用标识去缓存池中取得cell       如果缓存池中没有cell,创建cell       传递模型给cell (这一步是在- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 这个方法中做的)   方式二、通过代码自定义cell:  
        
    1> 新建一个UITableViewCell的子类——weiboCell。     2> 在创建cell的时候 (initWithStyle:reuseIdentifier:方法中) 添加cell内部需要使用的子控件。     3> 新建一个模型类—— Weibo,增加对应的数据属性。     4> 给WeiboCell增加一个Weibo模型属性, 在拿到Weibo模型数据的同时设置子控件的属性。     5> 重写setWeibo:方法,在这里面取出Weibo模型的数据显示到子控件上。
        在Deal中:         @interface Deal:NSObject         @property (nonatomic, copy) NSString *icon;         @property (nonatomic, copy) NSString *title;         @property (nonatomic, assign) int buy;         @property (nonatomic, assign) double price;         @property (nonatomic, assign) BOOL isNew;         #end
  • 相关阅读:
    三种常用排序理论
    无参带返回类型方法练习
    无参带返回类型方法总结
    Java_无参数无返回类型方法及练习
    Java_方法的调用②及案例
    方法内存分析(进栈(压栈)、出栈(弹栈))
    Java_方法的基本语法格式
    Java_方法的调用①及案例
    Java_方法的定义以及分类
    Java_break与continue区别
  • 原文地址:https://www.cnblogs.com/nxz-diy/p/5069171.html
Copyright © 2011-2022 走看看