这是我的代码:
- (UITableView *)table {
if (!_table) {
_table = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
[_table setDelegate:self];
[_table setDataSource:self];
[_table registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
}
return _table;
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (!cell)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
else
[self configureCell:cell forRowAtIndexPath:indexPath];
return cell;
}
问题是当我registerClass
为我的表时,它假设我的单元格样式为UITableViewCellStyleDefault
。这就是detailTextLabel
没有出现的原因。我测试了它。
评论registerClass
行不起作用,因为我CellIdentifier
没有任何dequeueReusableCell
。所以它会抛出一些例外。
如果我没有使用dequeue
,它可行,但这不是最佳做法。
AFAIK,表格单元格在初始化后无法改变其样式。那么如何让detailTextLabel
出现?
答案 0 :(得分:7)
问题是当我
的原因registerClass
为我的表时,它假设我的单元格样式为UITableViewCellStyleDefault
。这就是为什么detailTextLabel
没有出现
这是正确的。解决方案是:不要将UITableViewCell注册为您的类。注册一个自定义UITableViewCell子类,其唯一目的是将其自身初始化为不同的样式。
例如,注册您已定义的MyCell类:
@interface MyCell:UITableViewCell
@end
@implementation MyCell
-(id)initWithStyle:(UITableViewCellStyle)style
reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:UITableViewCellStyleValue2 // or whatever style you want
reuseIdentifier:reuseIdentifier];
return self;
}
@end