2015-01-18 3 views
0

У меня есть табличное представление, которое допускает множественный выбор. При возвращении в tableView я хотел бы удалить все предыдущие варианты. Приведенный ниже код очищает только первую выбранную ячейку. Как я могу очистить все ячейки?Очистить все выборки с помощью deselectRowAtIndexPath

override func viewWillAppear(animated: Bool) { 
    if (self.tableView.indexPathForSelectedRow() != nil) { 
     self.tableView.deselectRowAtIndexPath(self.tableView.indexPathForSelectedRow()!, animated: true) 
    } 
} 
+0

Вы используете tableviewcontroller? – ericgu

+0

@swiftshokunin Да, я использую UITableViewController – Onichan

ответ

2

Вы должны использовать indexPathsForSelectedRows() вместо этого.

override func viewWillAppear(animated: Bool) { 
    if let selectedRows = tableView.indexPathsForSelectedRows() { 
     for indexPath in selectedRows { 
      tableView.deselectRowAtIndexPath(indexPath as NSIndexPath, animated: true) 
     } 
    } 
} 

Или, если вы используете UITableViewController, вы можете просто установить его свойство clearsSelectionOnViewWillAppear к True (как @swiftshokunin сказал).

Ссылки:

+0

'indexPathsForSelectedRows()' все еще только очищает первый выбор. 'ClearsSelectionOnViewWillAppear' имеет такую ​​же проблему в моем комментарии для ответа @ swiftshokunin. http://i.imgur.com/cYFNpvC.png – Onichan

+0

Вы перебираете значения и отменяете выбор каждого NSIndexPath? –

+0

Спасибо за ответ. Итак, мне нужно пройти все выбранные значения? Я бы использовал цикл «For .. In ...»? – Onichan

1

UITableViewController обладает свойством:

clearsSelectionOnViewWillAppear 

enter image description here

+0

Я реализовал его в viewWillLoad, и он не влияет. http://i.imgur.com/OQ62GSM.png – Onichan

+0

try willDidAppear или view – ericgu

+0

viewDidAppear не работает ни – Onichan

Смежные вопросы