一 下拉刷新
1)使用第三方类库:EGORefreshTableHeaderView。在-(void)viewDidLoad:中设置EGORefreshTableHeaderView的一个实例,添加一下代码
//下拉刷新
self.refreshHeaderView = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.tableView.bounds.size.height, self.view.frame.size.width, self.tableView.bounds.size.height)];
_refreshHeaderView.delegate = self;
[self.tableView addSubview:_refreshHeaderView];
(1)- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
//下拉刷新
[_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];
//scrollView.contentOffset.y表单偏移长度,表单向上滚动出屏幕的高度
//这个if 语句用来判断 是否显示“上拉加载更多”字样
if (scrollView.contentOffset.y+scrollView.frame.size.height>scrollView.contentSize.height && scrollView.contentSize.height > scrollView.frame.size.height)
{
//默认的是隐藏,现在设为不隐藏
[self.tableView.tableFooterView setHidden:NO];
}
}
(2)- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
//下拉刷新 代理
[_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];
if (_isLastPage) {
[self.tableView.tableFooterView setHidden:YES];
return;
}
//scrollView.contentOffset.y表单偏移长度,表单向上滚动出屏幕的高度
if (scrollView.contentOffset.y+scrollView.frame.size.height>scrollView.contentSize.height && scrollView.contentSize.height > scrollView.frame.size.height)
{
if ([NetAccess reachable]) {
[_activityIndicatorView startAnimating];
[self loadNextPage];
}
}else {
[self.tableView.tableFooterView setHidden:YES];
}
}
- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view
{
[self reloadTableViewDataSource];
- (void)reloadTableViewDataSource{
[self reloadAllData];
/*(网络请求数据,在数据返回的方法中一定要添加以下代码:
[self.tableView reloadData];//得到数据 进行刷新
[self doneLoadingTableViewData];//刷新结束
[_activityIndicatorView stopAnimating];//指示器停止)*/
_reloading = YES;//正在刷新
}
(5)//刷新结束 获取到数据 刷新结束后刷新控件恢复到原位
- (void)doneLoadingTableViewData{
_reloading = NO;
[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];
}
(6)//得到刷新状态
- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view
{
return _reloading; // should return if data source model is reloading
}
(7)//记录刷新时间
- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view
{
NSUserDefaults *info = [NSUserDefaults standardUserDefaults];
NSDate *date = [info objectForKey:@"LastAPILoadList"];
return date;
}
UILabel *label = [[UILabel alloc]init];
label.text = @"上拉加载更多";
label.tag = 9999;
label.frame = CGRectMake(PAD_VS_PHONE(334, 110), 0, 100, 30);
label.textColor = [UIColor darkGrayColor];
label.font = [UIFont boldSystemFontOfSize:14];
label.backgroundColor = [UIColor clearColor];
self.activityIndicatorView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
UIView *bottomView = [[UIView alloc]init ];
[bottomView addSubview:label];
bottomView.backgroundColor = [UIColor whiteColor];
bottomView.frame = CGRectMake(0, 0, 320, 30);
[bottomView addSubview:_activityIndicatorView];
_activityIndicatorView.frame = CGRectMake(PAD_VS_PHONE(314, 90), 5, 20, 20);
self.tableView.tableFooterView = bottomView;
[self.tableView.tableFooterView setHidden:YES];
-(void)loadNextPage
{
if ([ NetAccess reachable]) {
currentPage++;
[self.netAccess loadHotList:10 Num:currentPage];
}
}
//判断是第几页
if(currentPage > 1)
{ //如果消息的数量<10的话 说明没有更多数据了
if (msgs.count < 10) {
_isLastPage = YES;
UILabel *footerLabel = (UILabel *)[self.tableView.tableFooterView viewWithTag:9999];
footerLabel.text = @"没有更多信息了";
}
NSMutableArray *temp = [[NSMutableArray alloc]initWithArray:_currentMsgs];
[temp addObjectsFromArray:msgs];
self.currentMsgs = temp;
[self.tableView reloadData];
[self doneLoadingTableViewData];
[_activityIndicatorView stopAnimating];
}else {
}