#ios #swift #uitableview #tableviewcell
#iOS #swift #uitableview
Вопрос:
Как я могу отменить выбор строки, когда выбрана другая строка здесь у меня есть это в моей ячейкеforrowatindexpath
if ff.isVisitedd{
cell.accessoryType = .Checkmark
}else{
cell.accessoryType = .None
}
И это в didSelectRowAtIndexPath
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
let selectedRows = tableView.indexPathsForSelectedRows! as? [NSIndexPath]
let ff: Card!
ff = cards[indexPath.row]
ff.isVisitedd = true
cell.accessoryType = .Checkmark
}
Ответ №1:
Swift 3
Вы можете использовать этот deselectRow(at:,animated:)
метод.
Swift 2
deselectRowAtIndexPath(indexPath:,animated:)
Комментарии:
1. Да, это отменит его выбор при нажатии .. я хочу отменить выбор при нажатии на другую строку
Ответ №2:
Насколько я понимаю, вы хотите снять флажок с ранее выбранной ячейки при выборе другой ячейки. Поскольку в вашем cellForRowAtIndexPath
методе вы уже правильно настроили accessoryType
, любая новая ячейка будет иметь правильный статус флажка. Осталось только снять флажок с существующих ячеек, если таковые имеются. Вы можете получить существующие ячейки из visibleCells
табличного представления. Одним из возможных решений является:
tableView.visibleCells.filter { $0 != cell }.forEach { $0.accessoryType = .None }
Если вы предпочитаете цикл for:
for visibleCell in tableView.visibleCells where visibleCell != cell {
visibleCell.accessoryType = .None
}
Комментарии:
1. Куда это приведет
2. Внутри
if let
@benfo3. Я только что обновил ответ, чтобы он соответствовал имени
tableView
переменной и версии Swift.4. Да, я понял это.