gpt4 book ai didi

ios - 从 TableView (Swift) 中删除行时出错

转载 作者:行者123 更新时间:2023-11-28 13:55:31 25 4
gpt4 key购买 nike

我想从 TableView 中删除一行,但它不起作用:/

下一个代码块是由自定义按钮触发的(不是来自内部 Apple-Table-Edit)。

self.tableView.beginUpdates()
self.sections[indexPath.section].items.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .automatic)
self.tableView.endUpdates()

这是一个部分的样子:

class Section: Comparable {
var state: TrackingObject.stateEnum
var items: [TrackingObject]
var expanded: Bool

init(state : TrackingObject.stateEnum, items : [TrackingObject], expanded : Bool){
self.state = state
self.items = items
self.expanded = expanded
}

static func group(trackingObjects: [TrackingObject]) -> [Section] {
let groups = Dictionary(grouping: Model.trackingObjects) { (trackingObject: TrackingObject) -> TrackingObject.stateEnum in
return trackingObject.currentState
}
return groups.map { (state: TrackingObject.stateEnum, trackingObjects: [TrackingObject]) in
return Section(state: state, items: trackingObjects, expanded: state == .active_due ? true : false)
}.sorted()
}
}

预期:给定 indexPath 的行通过动画删除,并在“数据源”中删除(称为:self.sections)

实际输出:错误信息:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to insert row 2 into section 0, but there are only 0 rows in section 0 after the update'

(我正在删除第 0 节中的第二行)

最佳答案

self.sections[indexPath.section].items.remove(at: indexPath.row)
self.tableView.beginUpdates()
DispatchQueue.main.async {
tableView.deleteRows(at: [indexPath], with: .automatic)
self.tableView.endUpdates()
}

尝试在 beginUpdates() 之前从数据源中删除项目。您也可以只从数据源中删除项目并重新加载 TableView ,因为您将动画选项设置为自动,因此 TableView 将执行更可取的动画。

关于ios - 从 TableView (Swift) 中删除行时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53933165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com