2017-01-13 7 views
0
let indexPaths = (0..<array.count - 1).map { i in 
    return IndexPath(item: i, section: section) 
} 

tableView.beginUpdates() 
if hidden[section] { 
    array.remove(at: IndexPath(item: item, section: section).row) 
    tableView.deleteRows(at: indexPaths, with: .fade) 
} else { 
    tableView.insertRows(at: indexPaths, with: .fade) 
} 
tableView.endUpdates() 

Я хочу удалить все ячейки раздела в UITableView, когда заголовок этого раздела будет прослушиваться. Однако он работает неправильно.Как удалить строки в UITableView в Swift

ошибка говорит, что "Cannot convert value of type CountableRange<Int> to expected argument Int".

Что такое правильный способ удалить все клетки?

+1

Удалить все элементы ('removeAll()') в массиве источников данных, а затем вызвать 'deleteSections()' в таблицеView, проходящей соответствующий раздел. – vadian

ответ

2

Из просмотра кода вы заполняете таблицуView данными из массива.

Если это так, вы можете обнаружить щелчок по заголовку раздела и при нажатии этого заголовка. Тогда вы звоните:

array.removeAll() 

И когда это выполняется:

tableView.reloadData() 

И вы можете обнаружить кран на заголовок раздела с:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { /*to acces the section indexPath.section*/ } 

Затем все клетки удаляются из-за нет данных для заполнения таблицыView.