UITableView忽略注册单元格

时间:2017-06-22 11:49:04

标签: ios swift uitableview

当我忽略为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(...)`赢了。

2 个答案:

答案 0 :(得分:0)

您需要检查空单元格如下:

if (cell == nil) {
    cell = MyCellType(withIdentifier: kIdentifier)
   }

答案 1 :(得分:0)

你的假设是正确的。 我经常在Object-C中编写这个样式代码,很好。