@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 *)tableViewnumberOfRowsInSection:(NSInteger)section {
return [tableData count];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier =@"Cell";
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]autorelease];
}
cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
return cell;
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollViewwillDecelerate:(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)];
[tableFooterActivityIndicatorsetActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
[tableFooterActivityIndicatorstartAnimating];
[self.table.tableFooterViewaddSubview: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:[UIFontfontWithName:@"Helvetica Neue" size:14]];
[loadMoreText setText:@"上拉显示更多数据"];
[tableFooterView addSubview:loadMoreText];
self.table.tableFooterView = tableFooterView;
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end