Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add rows to UITableView when scrolled to bottom

Is there a way to trigger an event, such as with an IBAction, when a user scrolls to the bottom of a UITableView? I would like to add more rows if this happens. How do I do this?

like image 852
aherlambang Avatar asked May 16 '11 21:05

aherlambang


2 Answers

Unless it´s a little late, but i think i found a better solution:

instead of

 - (void)scrollViewDidScroll: (UIScrollView)scroll 

i used

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 

This is much more convenient, cause the event is only triggered once. I used this code in my application to load more rows in my tableview at the bottom (maybe you recognize this type of reloading from the facebook application - only difference that they are updating at the top).

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {         NSInteger currentOffset = scrollView.contentOffset.y;     NSInteger maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height;      if (maximumOffset - currentOffset <= -40) {         NSLog(@"reload");     } } 

Hope anyone will help this.

like image 192
user944351 Avatar answered Sep 18 '22 20:09

user944351


Simply listen to the scrollViewDidScroll: delegate method, compare the content offset with the current possible offset and if lower then some threshold call your method to update the tableview. Don't forget to call [tableView reloadData] to make sure it reload the newly added data.

EDIT: Put together abstract code, not sure if it works, but should.

- (void)scrollViewDidScroll: (UIScrollView *)scroll {      // UITableView only moves in one direction, y axis      CGFloat currentOffset = scroll.contentOffset.y;      CGFloat maximumOffset = scroll.contentSize.height - scroll.frame.size.height;       // Change 10.0 to adjust the distance from bottom      if (maximumOffset - currentOffset <= 10.0) {           [self methodThatAddsDataAndReloadsTableView];      } } 
like image 36
Henri Normak Avatar answered Sep 21 '22 20:09

Henri Normak