删除行时,我遇到了崩溃。
// Updating my data model
....
// apply the updates
self.tableView.beginUpdates()
self.tableView.deleteRows(at: indexPathsToDelete, with: .automatic)
self.tableView.endUpdates()
重现的步骤 - 添加行 - 删除行,特别是确保当前屏幕外有一些行(当删除成功时,它将在屏幕中显示) - 重复直到发生崩溃
它并不总是发生,所以我最好的猜测是它只会在它试图加载的单元格被回收时发生
这是在10.0模拟器中使用Xcode 8.0
*** Assertion failure in -[UITableView _updateWithItems:updateSupport:],
/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3599.6/UITableView.m:3149
Missing cell for newly visible row 2
(null)
cellForRowAt的代码
if isMultipe{
let cell = tableView.dequeueReusableCell(withIdentifier: DetailsTableViewCell.defaultIdentifier, for: indexPath) as! DetailsTableViewCell
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: DetailsMultipleTableViewCell.defaultIdentifier, for: indexPath) as! DetailsMultipleTableViewCell
return cell
}
答案 0 :(得分:7)
我遇到了同样的问题,我发现UITableView
在部分标题高度可变时动画插入/更新/删除行有严重问题。只需将高度转换为某个常量并再次尝试。
这实际上意味着删除estimatedSectionHeaderHeight
。
答案 1 :(得分:1)
在我的情况下,当单元格使用自动布局来计算它的高度时,它会崩溃。因此,唯一有保障的解决方案是使用手动计算高度。 (实际上很伤心......)
答案 2 :(得分:1)
在我的情况下,我有这个问题只是为了将第一行插入空白部分,所以我试着像这样修复它:
self.array.append(item)
if self.array.count > 1 {
self.tableView.beginUpdates()
self.tableView.insertRows(at: indexPathes, with: .top)
self.tableView.endUpdates()
} else {
self.tableView.reloadSections([1], with: .fade)
}
答案 3 :(得分:1)
当我有不同大小的细胞时,这个问题发生在我身上。我的代码:
tableView.estimatedRowHeight = 150
tableView.rowHeight = UITableViewAutomaticDimension
在移动/插入/删除期间,应用程序因"Missing cell for newly visible row"
消息而崩溃。所以我删除了这一行:
tableView.estimatedRowHeight = 150
并实现委托方法,其中每行返回单独的估计高度。
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {}
希望它会对某人有所帮助。
答案 4 :(得分:0)
删除tableView.dequeueReusableCell中的indexPath
if isMultipe{
let cell = tableView.dequeueReusableCell(withIdentifier: DetailsTableViewCell.defaultIdentifier) as! DetailsTableViewCell
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: DetailsMultipleTableViewCell.defaultIdentifier) as! DetailsMultipleTableViewCell
return cell
}
答案 5 :(得分:0)
我遇到了类似的问题。
emrekyv建议删除estimatedSectionHeaderHeight
,但我有一个表有一个seaction,没有标题,没有页脚。
扩展他的想法并将estimatedRowHeight
设置为0(=非自动)修复了问题。
所以规则是:
更新UITableView时不要估计任何高度。
答案 6 :(得分:0)
就我而言,这是由于我忘记在自定义子类中调用super.prepareForReuse()
而发生的。
请参见https://developer.apple.com/documentation/uikit/uitableviewcell/1623223-prepareforreuse:
如果重写此方法,则必须确保调用超类 实施。