Как отменить выбор выбранной строки

#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 @benfo

3. Я только что обновил ответ, чтобы он соответствовал имени tableView переменной и версии Swift.

4. Да, я понял это.