GitHub:https://github.com/shiki/STableViewController
STableViewController比PullToRefresh多了一个上拉加载更多功能,使用上也差不多简单,需要继承自STableViewController,再实现一些方法:
- (void) viewDidLoad
{
[super viewDidLoad];
self.title = @"STableViewController Demo";
[self.tableView setBackgroundColor:[UIColor lightGrayColor]]; // 需要创建两个自定义视图用于显示"下拉刷新"、"上拉加载更多"
self.headerView = headerView;
self.footerView = footerView;
}
#pragma mark - Pull to Refresh
- (void) pinHeaderView
{
[super pinHeaderView]; // 下拉刷新视图显示一些加载动画
}
- (void) unpinHeaderView
{
[super unpinHeaderView]; // 下拉刷新视图停止动画
}
- (void) headerViewDidScroll:(BOOL)willRefreshOnRelease scrollView:(UIScrollView *)scrollView
{
// 下拉刷新视图显示状态信息
if (willRefreshOnRelease)
//hv.title.text = @"松开后刷新...";
else
//hv.title.text = @"下拉刷新...";
}
- (BOOL) refresh
{
if (![super refresh])
return NO; // 下拉刷新加载数据
[self performSelector:@selector(addItemsOnTop) withObject:nil afterDelay:2.0];
return YES;
}
#pragma mark - Load More
- (void) willBeginLoadingMore
{
// 上拉加载更多视图加载动画
}
- (void) loadMoreCompleted
{
[super loadMoreCompleted];
// 上拉加载更多视图停止动画
if (!self.canLoadMore)
{
//没有更多数据的时候执行代码...
}
}
- (BOOL) loadMore
{
if (![super loadMore])
return NO;
// 上拉加载更多数据
[self performSelector:@selector(addItemsOnBottom) withObject:nil afterDelay:2.0];
return YES;
}
//
- (void) addItemsOnTop
{
// 加载数据...
[self.tableView reloadData];
// 数据加载完成通知上拉视图
[self refreshCompleted];
}
- (void) addItemsOnBottom
{
// 加载更多数据...
[self.tableView reloadData];
// 通过判断设置是否可以加载更多
//self.canLoadMore = NO;
// 数据加载完成通知下拉视图
[self loadMoreCompleted];
}