我希望每个单元格显示detailTextLabel
。
使用:
实例化(cellForRowAtIndexPath:
)单元格
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
我尝试用以下方式设置样式类型:
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:@"Cell"] autorelease];
}
(我的xcode在自动释放时给出了ARC警告,所以我也尝试省略它。虽然结果相同)
我有点困惑。显然没有cell == nil
,代码的第一部分是徒劳的,但是使用它,单元格永远不会显示detailTextLabel
。 (是的,正确设置了cell.detailTextLabel.text
)
我该如何解决这个问题?
更新:因为我正在使用故事板,所以我可以通过将单元格样式设置为'字幕来实现所需的结果。然而,如何以编程方式进行的这个问题仍然存在
答案 0 :(得分:0)
以编程方式执行此操作时,更改为以下代码。 (非常感谢mbm29414)
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:@"Cell"];
}
答案 1 :(得分:0)
创建表格单元格的现代方法是注册单元格,然后使用索引路径将其出列。问题是,如果您注册UITableViewCell
,您将始终获得default
类型的单元格。
解决方案是继承UITableViewCell并在其中设置样式。例如:
class SubtitleTableViewCell: UITableViewCell {
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: .subtitle, reuseIdentifier: reuseIdentifier)
}
required init?(coder aDecoder: NSCoder) {
fatalError()
}
}
现在,在注册时使用您的子类。
let table = UITableView(frame: .zero, style: .plain)
table.register(DebugTableViewCell.self, forCellReuseIdentifier: identifier)