iOS开发笔录iOS Developer移动开发

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

2016-02-16  本文已影响108人  Z了个L

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

@interface XMGTgCell : UITableViewCell
@end

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

@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方法

- (void)setTg:(XMGTg *)tg
{
    _tg = tg;

    // .......
}

在控制器中

[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];

- (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

上一篇下一篇

猜你喜欢

热点阅读