Tableview de indexPathsForVisibleRows kullanımı
Tableview kullanımlarında bazen sadece görünen cell'lerde değişiklik yapılmak istenebilir. Örnegin bir seçme işleminden sonra cell içerisinde UI ile ilgili değişiklik olabilir veya bir reload işlemi olabilir. Bu tip durumlarda indexPathsForVisibleRows
kullanabilirsiniz.
/*
Modify all the visible cells directly,
since -[UITableView reloadData] resets a lot
of things on the table view like selection & editing states
*/
func visibleIndexPathsToReload(intersecting indexPaths: [IndexPath]) -> [IndexPath] {
let indexPathsForVisibleRows = tableView.indexPathsForVisibleRows ?? []
let indexPathsIntersection = Set(indexPathsForVisibleRows).intersection(indexPaths)
return Array(indexPathsIntersection)
}
minik bir örnek daha
// Reset the checkmarks
tableView.indexPathsForVisibleRows?.forEach { indexPath in
let cell = tableView.cellForRow(at: indexPath)
cell?.accessoryType = indexPath.row == selectedRow ? .checkmark : .none
}