UITableView Refresh without scrolling UITableView Refresh without scrolling ios ios

UITableView Refresh without scrolling


For Swift 3+:

You need to save the current offset of the UITableView, then reload and then set the offset back on the UITableView.

I have created this function for this purpose:

func reload(tableView: UITableView) {    let contentOffset = tableView.contentOffset    tableView.reloadData()    tableView.layoutIfNeeded()    tableView.setContentOffset(contentOffset, animated: false)}

Simply call it with: reload(tableView: self.tableView)


SWIFT 3

let contentOffset = self.tableView.contentOffsetself.tableView.reloadData()self.tableView.layoutIfNeeded()self.tableView.setContentOffset(contentOffset, animated: false)

This is error of iOS8 when using UITableViewAutomatic Dimension. We need store the content offset of table, reload table, force layout and set contenOffset back.

CGPoint contentOffset = self.tableView.contentOffset;[self.tableView reloadData];[self.tableView layoutIfNeeded];[self.tableView setContentOffset:contentOffset];


I am showing if only one row is being added. You can extend it to multiple rows.

    // dataArray is your data Source object    [dataArray insertObject:name atIndex:0];    CGPoint contentOffset = self.tableView.contentOffset;    contentOffset.y += [self tableView:self.tableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];    [self.tableView reloadData];    [self.tableView setContentOffset:contentOffset];

But for this to work you need to have defined - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath the method. Or else, you can directly give your tableview row height if it is constant.