В вашей реализации didDeselect
пользователь может проверить не более одной ячейки.
Вы можете проверить, выбрана ли эта строка, отмените выбор: (поскольку didDeselect срабатывает автоматически)
override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
if (countSelections()==1) {
//Last checked item
}
if (locationToDisplay[indexPath.row].subscribed == 1) {
locationToDisplay[indexPath.row].subscribed = 0
}
}
Также выможете удалить это переопределение и обработать выделение и отмена выбора ячейки в didSelect
.
И вы можете проверить, что вы хотите следующим образом:
сначала вы должны проверить, есть ли первыйвыбранный элемент или нет (объявите его в viewDidLoad
): firstTime = true
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if (!firstTime) {
if (countSelections() > 1) {
if (locationToDisplay[indexPath.row].subscribed == 1) {
locationToDisplay[indexPath.row].subscribed = 0
} else {
locationToDisplay[indexPath.row].subscribed = 1
}
}
} else {
locationToDisplay[indexPath.row].subscribed = 1
firstTime = false
}
}
Кроме того, я думаю, что лучший способ - позволить пользователю отменить выбор всего и проверить количество выборок в кнопке, которая делает просмотр видадругому.