我必须展示几个不同的单元格。为此,我调用了tableView(_:cellForRowAt:)
,在该方法中,我对不同的UITableViceCell
类使用了两个不同的ID
这是一个简单的代码:
class SimpleView: UITableViewController {
...
let cellIdMain = "JournalMainCellID"
let cellIdExtra = "JournalMainSceneAddNewID"
...
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == journals.count {
guard let cellAdding = tableView.dequeueReusableCell(withIdentifier: cellIdExtra, for: indexPath) as? JournalMainSceneAddNew else {
fatalError("Cannot connect to the cell")
}
return cellAdding
}
guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdMain, for: indexPath) as? JournalMainSceneCell else {
fatalError("Cannot connect to the cell")
}
cell.numberOfCountriesLabel.text = "\(journals[indexPath.row].numberOFCountries)"
return cell
}
}
当我尝试查找内存泄漏时,我发现:
当我单击发现的详细信息时:
为什么会这样?它看起来非常简单明了。
已更新:图片已更新。
答案 0 :(得分:0)
您正在写条件是否仅在一种情况下有效,例如indexpath.row将仅等于count 即使它无法正常工作,因为经过之后,如果它将在if之后执行代码块 这意味着您的if块是浪费的 以及为什么要使用cell.delegate ??
答案 1 :(得分:0)
使用以下代码更新您的代码。
NullPointerException