Вставить раздел в табличном представлении с Swift - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь вставить новый раздел в табличное представление

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
}

Я получаю сообщение об ошибке:

Неверное обновление: неверное количество разделов. Количество секций содержащиеся в табличном представлении после обновления (80) должны быть равны количество разделов, содержащихся в табличном представлении до обновления (40), плюс или минус количество вставленных или удаленных разделов (80 вставлено, 0 удалено).

Когда я делаю следующее:

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

Я получаю ошибку:

исключение 'NSInternalInconsistencyException', причина: 'попытка вставить раздел 80, но после обновления осталось только 80 разделов

Что я делаю не так?

1 Ответ

0 голосов
/ 25 марта 2019

как описано выше, количество старых разделов равно 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...