Я не могу удалить свою последнюю ячейку таблицы в Swift - PullRequest
0 голосов
/ 10 мая 2019

Я пишу корзину для покупок, и все, кажется, работает хорошо, но я не могу удалить последнюю строку.

Я могу удалить, но не последнюю строку.

override func viewDidLoad() {
    super.viewDidLoad()

    createLineItems()
}

override func numberOfSections(in tableView: UITableView) -> Int {
    if lineItems.count == 0 {
        return 0
    } else {
        return 1
    }
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return lineItems.count
}

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if(editingStyle == .delete) {
        lineItems.remove(at: indexPath.row)

        tableView.beginUpdates()

        let indPath = IndexPath(item: indexPath.row, section: 0 )

        tableView.deleteRows(at: [indPath], with: .fade)
        tableView.endUpdates()

    }
}

func createLineItems() {
    lineItems = [LineItem]()

    lineItems.append(LineItem(frame:
        CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height),
                              index: 1)
        )


    lineItems.append(LineItem(frame:
        CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height),
                              index: 2)
    )

    lineItems.append(LineItem(frame:
        CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height),
                              index: 3)
    )

}

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

Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Неверное обновление: неверное количество разделов.Количество разделов, содержащихся в табличном представлении после обновления (0), должно быть равно количеству разделов, содержащихся в табличном представлении до обновления (1), плюс или минус количество вставленных или удаленных разделов (0 вставлено, 0удалено). '

Я прочитал:

https://www.hackingwithswift.com/example-code/uikit/how-to-remove-cells-from-a-uitableview

, а также другие страницы, которые я не могу найти повторно.

Я знаю, что сначала мне нужно удалить элементы из моего массива, а затем удалить строку.

Я знаю, что почти уверен, что мне нужно окружить удаление моей строки beginUpdates и endUpdates.

Но я получаю эту ошибку каждый раз.Я перепробовал 100 различных вариантов.

Ошибка говорит о том, что число строк должно быть на 1 меньше исходного числа.

Я понятия не имею, как это не так.

1 Ответ

3 голосов
/ 10 мая 2019

Проблема здесь:

override func numberOfSections(in tableView: UITableView) -> Int {
    if lineItems.count == 0 {
        return 0
    } else {
        return 1
    }
}

Это должно быть:

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

Если вы удалите последнюю строку, ваш код утверждает, что теперь нет разделов.Но вы не удаляете какие-либо разделы, только строки.Это сбивает с толку представление таблицы и приводит к ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...