我想将UITableViewCellStyle.Subtitle
样式用于默认表格单元格。我在an SO answer中找到了这样的答案:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell?
if (cell != nil) {
cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
}
}
使用上面的代码,我可以成功使用Subtitle单元格样式。但是,我开始认为可能出现问题?为什么在cell != nil
时创建新单元格?通过这种方式,你永远不会重复使用细胞,不是吗?此外,我可以致电
let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
我的结果相同。为什么要将可重复使用的细胞和然后创建一个新的?什么是实现细胞再利用的正确方法?那时,为细胞使用UITableViewCellStyle.Subtitle
样式?
更新
请注意,第一段代码是cell != nil
,而不是cell == nil
。如果我更改cell == nil
,代码将不会使用Subtitle
样式。我认为第一个有效,因为它总是创建Subtitle
样式的新单元格。
答案 0 :(得分:10)
如果您使用h.setVisible(true);
,则无法覆盖在创建每个单元格时将传递给类的样式。我使用的解决方法是创建一个名为tableView.registerClass
的{{1}}子类,它始终使用UITableViewCell
样式。
SubtitleCell
然后我用tableview注册该类
.Subtitle
答案 1 :(得分:1)
你基本上是对的;你不需要代码的第二部分。
这个:
let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
会给你一个新的"单元格,如果没有可以重复使用,否则为现有单元格。