团购:xib实现自定义cell
微博:代码实现自定义cell
团购:
(1)自定义xib界面
注意这里的xib的tag的设置,要和cell重用机制中的ID一致。
cell重用代码:加载xib
+ (instancetype)cellWithTableView:(UITableView *)tableView
{
static NSString *ID = @"xxxxx";
MJTgCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (cell == nil) {
cell = [[[NSBundle mainBundle] loadNibNamed:@"xibname" owner:nil options:nil] lastObject];
}
return cell;
}
(2)加载数据模型:
这里可以定义一个类,h文件中存放团购信息的所有成员变量。团购信息都存放到字典中,组成一个个的键值对。
针对每一个团购数据(一个字典数据)生成一个类的实例:
+ (instancetype)tgWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDict:dict];
}
- (instancetype)initWithDict:(NSDictionary *)dict
{
if (self = [super init]) {
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
这里使用的KVC键值观察。(3)刷新新的团购信息
更新数据模型。重新加载UITableView
微博:代码创建cell
(1)利用代码创建cell:UITableViewCell
重写初始化方法:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
添加各种视图到
self.contentView上
}(2)更新cell的数据和位置
这里有一个文字尺寸计算方法:
- (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font maxSize:(CGSize)maxSize
{
NSDictionary *attrs = @{NSFontAttributeName : font};
return [text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
}
(3)数据模型,除了基本的元素之外,还有各个元素的位置信息。其它的和团购信息类似。