I have a UITableView
that is populated with cells of a variable height. I would like the table to scroll to the bottom when the view is pushed into view.
I currently have the following function
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[log count]-1 inSection:0];
[self.table scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
log is a mutable array containing the objects that make up the content of each cell.
The above code works fine in viewDidAppear
however this has the unfortunate side effect of displaying the top of the table when the view first appears and then jumping to the bottom. I would prefer it if the table view
could be scrolled to the bottom before it appears.
I tried the scroll in viewWillAppear
and viewDidLoad
but in both cases the data has not been loaded into the table yet and both throw an exception.
Any guidance would be much appreciated, even if it's just a case of telling me what I have is all that is possible.
I wanted the table to load with the end of the table shown in the frame. I found using
did not work because it gave an error when table height was less than the frame height. Note my table only has one section.
The solution that worked for me was implement the following code in viewWillAppear:
The BOOL ivar initialLoad is set to TRUE in viewDidLoad.
In Swift 3.0
I think the easiest way is this:
Swift 3 Version:
I believe that calling
[table setContentOffset:CGPointMake(0, CGFLOAT_MAX)]
will do what you want.Use this simple code to scroll tableView bottom
you should add
or it will not scroll to bottom.