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