Swift Multi Selection TableView возникает ошибка при отмене выбора строк - PullRequest
0 голосов
/ 24 марта 2019

У меня проблема с просмотром таблицы множественного выбора. Я получаю сообщение об ошибке, если я отменяю выбор предыдущих строк выбора в другом порядке, чем я выбрал его. Это говорит

Индекс вне диапазона Я получаю эту ошибку, когда пытаюсь удалить элемент из моего массива. Вот мой код:

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if tableView.cellForRow(at: indexPath)?.accessoryType == UITableViewCell.AccessoryType.checkmark{
        tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCell.AccessoryType.none
        //Line above occurs the error
        checkedCategories.remove(at: indexPath.row)
    }else{
        tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCell.AccessoryType.checkmark
        checkedCategories.append(allcategories[indexPath.row])
    }
}

1 Ответ

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

Вы всегда добавляете элементы в конец массива (поэтому индекс добавляемого элемента равен checkedCategories.count - 1). Но удаление по индексу строки.
Таким образом, вместо индекса строки, получите индекс добавленной категории, а затем удалите по этому индексу

if let index = checkedCategories.firstIndex(of: allcategories[indexPath.row]) {
    checkedCategories.remove(at: index)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...