2017-01-13 9 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のセクションのすべてのセルを削除します。しかし、正しく動作していないようです。SwiftのUITableViewで行を削除する方法

エラーが"Cannot convert value of type CountableRange<Int> to expected argument Int".

すべてのセルを削除する正しい方法は何と言いますか?

+1

データソース配列内のすべてのアイテム( 'removeAll()')を削除し、適切なセクションを渡してtableView上で 'deleteSections()'を呼び出します。 – vadian

答えて

2

あなたのコードを見ることから、配列のデータでtableViewを塗りつぶしています。

もしそうなら、セクションヘッダーのクリックとそのヘッダーがタップされたことを検出できます。

tableView.reloadData() 

そして、あなたがセクションヘッダにタップを検出することができます:

array.removeAll() 

そして、それが実行されます。そして、あなたは呼んでその後のすべてのセルが原因で削除され

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

tableViewを塗りつぶすデータはありません。

関連する問題