[自定义等高的cell]-xib方式

作者: Z了个L | 来源:发表于2016-02-16 19:12 被阅读108次

    新建一个继承自UITableViewCell的子类,比如XMGTgCell

    @interface XMGTgCell : UITableViewCell
    @end
    

    新建一个xib文件(文件名最好跟类名一致,比如XMGTgCell.xib)

    • 修改cell的class为XMGTgCell
    • 绑定循环利用标识
    • 添加子控件,设置子控件约束
    • 将子控件连线到类扩展中
    @interface XMGTgCell()
    @property (weak, nonatomic) IBOutlet UIImageView *iconImageView;
    @property (weak, nonatomic) IBOutlet UILabel *titleLabel;
    @property (weak, nonatomic) IBOutlet UILabel *priceLabel;
    @property (weak, nonatomic) IBOutlet UILabel *buyCountLabel;
    @end
    

    在XMGTgCell.h文件中提供一个模型属性,比如XMGTg模型

    @class XMGTg;
    
    @interface XMGTgCell : UITableViewCell
    /** 团购模型数据 */
    @property (nonatomic, strong) XMGTg *tg;
    @end
    

    在XMGTgCell.m中重写模型属性的set方法

    • 在set方法中给子控件设置模型数据
    - (void)setTg:(XMGTg *)tg
    {
        _tg = tg;
    
        // .......
    }
    

    在控制器中

    • 注册xib文件
    [self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([XMGTgCell class]) bundle:nil] forCellReuseIdentifier:ID];
    // 或者  因为bundle:传递的参数为nil的话,默认是mainBundle
    [self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([XMGTgCell class]) bundle:[NSBundle mainBundle]] forCellReuseIdentifier:ID];
    
    
    • 给cell传递模型数据
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // 访问缓存池
        XMGTgCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    
        // 设置数据(传递模型数据)
        cell.tg = self.tgs[indexPath.row];
    
        return cell;
    }
    

    #warning 默认新建的xib里面的UITableCell的尺寸宽是320,高是44,当初理解为会像新建的storyboard里面的正方形一样,在里面开始布局,添加约束,因为那个正方形的size是inferred类型,可推测的,然而UITableViewCell是默认给的,这个不重要,就算你给了宽160,高40,它显示的时候不是由自己决定的,而是由它的tableView来决定,高度由tableView.rowHeight来决定,宽度和tableView的宽度一样的,所以,在那个320*44里面添加子控件并添加相应的约束,没有什么问题,它会默认按照那个约束显示的,over

    相关文章

      网友评论

        本文标题:[自定义等高的cell]-xib方式

        本文链接:https://www.haomeiwen.com/subject/daopkttx.html