当我忽略为UITableView
注册指定的单元格,然后稍后在dequeueReusableCell
中调用func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
时,会发生什么?
电话看起来像这样:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell`
var cell = tableView.dequeueReusableCell(withIdentifier: kIdentifier) as? MyCellType
if cell.isNil {
cell = MyCellType(withIdentifier: kIdentifier)
}
}
显然它似乎会自动注册新单元格。这个假设是否正确?
我之所以可以调用tableView.register(MyCellType.self, forCellReuseIdentifier: kIdentifier) has legacy reasons, where registering the cell like this will mess up the layout of the cell, whereas initializing correctly with
MyCellType(...)`赢了。
答案 0 :(得分:0)
您需要检查空单元格如下:
if (cell == nil) {
cell = MyCellType(withIdentifier: kIdentifier)
}
答案 1 :(得分:0)
你的假设是正确的。 我经常在Object-C中编写这个样式代码,很好。