iOS*_*eek 18 uitableview ios swift
我删除一行时遇到崩溃.
// Updating my data model
....
// apply the updates
self.tableView.beginUpdates()
self.tableView.deleteRows(at: indexPathsToDelete, with: .automatic)
self.tableView.endUpdates()
Run Code Online (Sandbox Code Playgroud)
重现的步骤 - 添加行 - 删除行,特别是确保当前屏幕外有一些行(当删除成功时将显示在屏幕中 - 重复直到崩溃发生
它并不总是发生,所以我最好的猜测是它只会在它试图加载的单元格被回收时发生
这是使用Xcode 8.0的10.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)
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
这里报告了同样的错误:https://forums.developer.apple.com/thread/49676
我有同样的问题,我发现UITableView当节标题是可变高度时,动画插入/更新/删除行有严重问题.只需将高度转换为某个常量并再次尝试.
这实际上意味着删除estimatedSectionHeaderHeight.
删除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
}
Run Code Online (Sandbox Code Playgroud)