I am trying to scroll to the bottom of a UITableView after it is done performing [self.tableView reloadData]
I originally had
[self.tableView reloadData]
NSIndexPath* indexPath = [NSIndexPath indexPathForRow: ([self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1) inSection: ([self.tableView numberOfSections]-1)];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
But then I read that reloadData is asynchronous, so the scrolling doesn't happen since the self.tableView
, [self.tableView numberOfSections]
and [self.tableView numberOfRowsinSection
are all 0.
Thanks!
What's weird is that I am using:
[self.tableView reloadData];
NSLog(@"Number of Sections %d", [self.tableView numberOfSections]);
NSLog(@"Number of Rows %d", [self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1);
In the console it returns Sections = 1, Row = -1;
When I do the exact same NSLogs in cellForRowAtIndexPath
I get Sections = 1 and Row = 8; (8 is right)
Actually this one solved my problem:
I use this trick, pretty sure I already posted it to a duplicate of this question: