Refresh certain row of UITableView based on Int in Swift Refresh certain row of UITableView based on Int in Swift ios ios

Refresh certain row of UITableView based on Int in Swift


You can create an NSIndexPath using the row and section number then reload it like so:

let indexPath = NSIndexPath(forRow: rowNumber, inSection: 0)tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top)

In this example, I've assumed that your table only has one section (i.e. 0) but you may change that value accordingly.

Update for Swift 3.0:

let indexPath = IndexPath(item: rowNumber, section: 0)tableView.reloadRows(at: [indexPath], with: .top)


For a soft impact animation solution:

Swift 3:

let indexPath = IndexPath(item: row, section: 0)tableView.reloadRows(at: [indexPath], with: .fade)

Swift 2.x:

let indexPath = NSIndexPath(forRow: row, inSection: 0)tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)

This is another way to protect the app from crashing:

Swift 3:

let indexPath = IndexPath(item: row, section: 0)if let visibleIndexPaths = tableView.indexPathsForVisibleRows?.index(of: indexPath as IndexPath) {    if visibleIndexPaths != NSNotFound {        tableView.reloadRows(at: [indexPath], with: .fade)    }}

Swift 2.x:

let indexPath = NSIndexPath(forRow: row, inSection: 0)if let visibleIndexPaths = tableView.indexPathsForVisibleRows?.indexOf(indexPath) {   if visibleIndexPaths != NSNotFound {      tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)   }}


In Swift 3.0

let rowNumber: Int = 2let sectionNumber: Int = 0let indexPath = IndexPath(item: rowNumber, section: sectionNumber)self.tableView.reloadRows(at: [indexPath], with: .automatic)

byDefault, if you have only one section in TableView, then you can put section value 0.