[英]Error when Removing Row from TableView (Swift)
我想從表格視圖中刪除一行,但是它不起作用:/
下一個代碼塊是通過自定義按鈕(而不是內部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)
實際輸出:錯誤消息:
由於未捕獲的異常“ NSInternalInconsistencyException”而終止應用程序,原因:“試圖將第2行插入第0節,但更新后第0節只有0行”
(我正在刪除第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()之前從數據源中刪除項目。 您還可以從數據源中刪除項目,然后將動畫選項設置為自動,從而重新加載表格視圖,因此表格視圖將執行首選的動畫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.