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
 }


Apple Developer Documentation