UITableView底部FooterView实现上拉刷新

来源:互联网 发布:大富豪3.41棋牌源码 编辑:程序博客网 时间:2024/05/21 10:24

转载自:http://blog.sina.com.cn/s/blog_4d99ff710101030e.html

@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


0 0
原创粉丝点击