自定义高等Cell之frame
2016-09-02 本文已影响0人
vip4iPhonr
-
1.创建一个继承自UITableViewCell的子类,比如IZGrouponCell
-
1.1 在IZGrouponCell.m中重写initWithStyle:reuseIdentifier:方法
- 添加子控件
- 设置子控件的初始化属性(比如文字颜色、字)
-
1.1 在IZGrouponCell.m中重写initWithStyle:reuseIdentifier:方法
//在这个方法中添加所有的子控件
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
// ......
}
return self;
}
- **1.2 重写`-layoutSubviews`方法**
>- 一定要调用`[super layoutSubviews]`
>- 在这个方法中计算和设置所有子控件的frame
```objc
//在这个方法中计算所有子控件的frame
-(void)layoutSubviews
{
[super layoutSubviews];
// ......
}
```
- **1.3 需要提供一个模型属性,重写模型的set方法,在这个方法中设置模型数据到子控件**
>- 在IZGrouponCell.h文件中提供一个模型属性,比如IZGroupon模型
@class IZGroupon;
@interface IZGrouponCell : UITableViewCell
/** 团购模型数据 */
@property (nonatomic, strong) IZGroupon *groupon;
@end
>- 在IZGrouponCell.m中重写模型属性的set方法
-(void)setGroupon:(IZGroupon *)groupon
{
_groupon = groupon;
// .......
}
-
2.在控制器中
- 利用registerClass...方法注册Cell类
[self.tableView registerClass:[IZGrouponCell class] forCellReuseIdentifier:ID];
- **给cell传递模型数据**
```objc
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 访问缓存池
IZGrouponCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// 设置数据(传递模型数据)
cell.groupon = self.groupon[indexPath.row];
return cell;
}