Joe*_*ang 5 objective-c uitableview ios swift
我想使用UITableViewCellStyle.Subtitle样式作为默认表格单元格.我发现一个答案的SO回答是这样的:
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")
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,我可以成功使用Subtitle单元格样式.但是,我开始认为可能出现问题?为什么要创建新单元格cell != nil?这样,你永远不会重复使用细胞,不是吗?此外,我可以打电话
let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
Run Code Online (Sandbox Code Playgroud)
我有同样的结果.为什么要将可重复使用的单元格出列然后创建一个新单元?什么是实现细胞再利用的正确方法,并在当时使用UITableViewCellStyle.Subtitle细胞的样式?
UPDATE
请注意,第一段代码cell != nil不是cell == nil.如果我改变cell == nil,代码将不会使用该Subtitle样式.我认为第一个有效,因为它总是创建具有Subtitle风格的新单元格.
Cra*_*ens 11
如果您正在使用tableView.registerClass,则无法覆盖在创建每个单元格时将传递给类的样式.我使用的一种解决方法是创建一个始终使用该样式的UITableViewCell子类.SubtitleCell.subtitle
import UIKit
class SubtitleCell: UITableViewCell {
override init(style style: UITableViewCellStyle, reuseIdentifier reuseIdentifier: String?) {
super.init(style: .subtitle reuseIdentifier: reuseIdentifier)
}
}
Run Code Online (Sandbox Code Playgroud)
然后我用tableview注册该类
tableView.register(SubtitleCell.self, forCellReuseIdentifier: "cell")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5977 次 |
| 最近记录: |