使用Swift在表格视图中插入节

时间:2019-03-25 09:43:38

标签: swift

我正在尝试在表格视图中插入新部分

throws

我得到一个错误:

  

无效的更新:无效的节数。区间数   更新(80)之后,表格视图中包含的内容必须等于   更新之前表视图中包含的节数(40),   加上或减去插入或删除的节数(插入80个,   0已删除)。

当我执行以下操作时:

let oldIns = insertCounter //insertCounter = 40
insertCounter += Int(INSERT_MESSAGES) // insertCounter = 80
let minn = min(insertCounter, Int(dbmessages.count))
print(minn) // minn = 80
tableView.beginUpdates()
tableView.insertSections(NSIndexSet(indexesIn: NSMakeRange(0, minn)) as IndexSet, with: .top)
tableView.endUpdates()


override func numberOfSections(in tableView: UITableView) -> Int {
    let a = min(insertCounter, Int(dbmessages.count))
    print(a) // after call insertSections a = 80
    return min(insertCounter, Int(dbmessages.count))
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return 5
}

我得到了错误:

  

异常“ NSInternalInconsistencyException”,原因:“试图   插入第80条,但更新后只有80条。

我在做什么错?

1 个答案:

答案 0 :(得分:0)

如所描述的错误,您的旧节计数为40,插入80个节,因此更新的节计数应为120。

override func numberOfSections(in tableView: UITableView) -> Int {
    let a = min(insertCounter, Int(dbmessages.count))
    print(a) // after call insertSections a = 80
    // you should return 120 instead of 80 here.
    return min(insertCounter, Int(dbmessages.count))
}

或者您可以这样插入

tableView.insertSections(NSIndexSet(indexesIn: NSMakeRange(oldIns, minn)) as IndexSet, with: .top)