UITableView底部FooterView实现上拉刷新

转载自:http://carlme.blog.163.com/blog/static/183716327201272421728204/
@interface FooterViewTestViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>{

// 表格数据数组,因为是演示代码,直接定义为数组
NSMutableArray *tableData;

// 下拉时显示的数据
NSMutableArray *tableMoreData;


// 数据数量 NSUInteger dataNumber; // 加载状态 BOOL _loadingMore; UITableView *table; } @property (nonatomic, retain) UITableView *table; @property (nonatomic, retain) NSMutableArray *tableData; @property (nonatomic, retain) NSMutableArray *tableMoreData; // 创建表格底部 - (void) createTableFooter; // 开始加载数据 - (void) loadDataBegin; // 加载数据中 - (void) loadDataing; // 加载数据完毕 - (void) loadDataEnd; @end @implementation FooterViewTestViewController @synthesize table; @synthesize tableData; @synthesize tableMoreData; - (void)viewDidLoad { [super viewDidLoad];   table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460) style:UITableViewStylePlain];   table.delegate = self;   table.dataSource = self;   [self.view addSubview:table];   tableData = [[NSMutableArray alloc] initWithObjects: @"January",@"February",@"March",@"April",@"May",@"June", @"July",@"August",@"September",@"October",@"November",@"December",nil];   tableMoreData = [[NSMutableArray alloc] initWithObjects:@"BAIDU",@"GOOGLE",@"FACEBOOK",@"YAHOO",nil];
  [self createTableFooter]; }
#pragma mark - #pragma mark Table view data source // Customize the number of sections in the table view. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } // Customize the number of rows in the table view. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [tableData count]; } // Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; }   cell.textLabel.text = [tableData objectAtIndex:indexPath.row]; return cell; } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { // 下拉到最底部时显示更多数据   if(!_loadingMore && scrollView.contentOffset.y > ((scrollView.contentSize.height - scrollView.frame.size.height)))   {     [self loadDataBegin];   } } // 开始加载数据 - (void) loadDataBegin{ if (_loadingMore == NO) { _loadingMore = YES; UIActivityIndicatorView *tableFooterActivityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(75.0f, 10.0f, 20.0f, 20.0f)]; [tableFooterActivityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray]; [tableFooterActivityIndicator startAnimating]; [self.table.tableFooterView addSubview:tableFooterActivityIndicator];     [self loadDataing]; } } // 加载数据中 - (void) loadDataing {   dataNumber = [tableData count];   for (int x = 0; x < [tableMoreData count]; x++)   {     [tableData addObject:[tableMoreData objectAtIndex:x]];   }   [[self table] reloadData];   [self loadDataEnd]; } // 加载数据完毕 - (void) loadDataEnd{   _loadingMore = NO;   [self createTableFooter]; } // 创建表格底部 - (void) createTableFooter{ self.table.tableFooterView = nil; UIView *tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.table.bounds.size.width, 40.0f)]; UILabel *loadMoreText = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 116.0f, 40.0f)]; [loadMoreText setCenter:tableFooterView.center]; [loadMoreText setFont:[UIFont fontWithName:@"Helvetica Neue" size:14]]; [loadMoreText setText:@"上拉显示更多数据"]; [tableFooterView addSubview:loadMoreText]; self.table.tableFooterView = tableFooterView; } @end
原文地址:https://www.cnblogs.com/allanliu/p/4476276.html