reloadData only on tableView visible cells

That's how table views work by default. The UITableView class never loads cells until they're about to appear onscreen, even when you call reloadData.


To reload visible cells of tableview in Swift 3.0:

guard let visibleRows = pTableView.indexPathsForVisibleRows else { return }

pTableView.beginUpdates()

pTableView.reloadRows(at: visibleRows, with: .none)

pTableView.endUpdates()

Try this, You can reload any cell of the tableview using reloadRowsAtIndexPaths:

[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:[self.tableView indexPathsForVisibleRows]
                 withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];