スクロールまたはtableView.reloadData()
の呼び出しを行うたびに、UITableViewセルがリロードされます。そのため、UITableViewCellを選択するたびに、didSelectRowAt indexPath:
デリゲートの配列(例:selectedIndexArray)に選択したインデックス(indexPath.row)を追加します。選択したセルが既に選択されている場合は、selectedIndexArrayからセルを削除します。
cellForRowAt indexPath:
selectedIndexArrayを使用してセルを管理します。
var selectedIndexArray:[Int] = [] //to save selected tableViewCells
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let isSelected = false
for each in selectedIndexArray
{
if each == indexPath.row
{
isSelected = true
}
}
if isSelected == true
{
//set selected cell color
}
else
{
//set default cell color
}
}
didSelectRowAt indexPath:
のセルインデックスの追加と削除のロジックを記述する必要があります。
あなたが試したことを教えてください –
私はまだ学んでいますし、私がしたことは他人の投稿を閲覧して何をすべきかを見つけ出していますが、この事件の理由や解決策を考える –
@Ethan、選択したセルインデックスをキャッシュする方法は?そのためには、配列内のセルインデックスを保持する必要があります。 didSelectRowAtIndexPath - 存在しない場合は、配列にインデックスを追加する必要があります。すでに存在する場合は、配列からセルインデックスを削除します。 "cellForRowAtIndexPath"セルインデックスが選択されているかどうか確認します。 –