UITableView底部FooterView实现上拉刷新 (转自http://carlme.blog.163.com/blog/static/183716327201272421728204/)

本文介绍如何在iOS应用中实现表格数据的动态加载与下拉刷新功能,包括数据分页、加载状态指示、加载过程处理及数据更新等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@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;

}



- (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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值