集成下拉刷新数据上拉刷新更多数据

来源:互联网 发布:php怎么写后台 编辑:程序博客网 时间:2024/04/30 15:27

下拉刷新类库EGOTableViewPullRefresh资源文件下载地址:

 https://github.com/enormego/EGOTableViewPullRefresh/tree/


#import <UIKit/UIKit.h>

@class BaseTableView;

@protocol BaseTableViewDelegate <NSObject>


//下拉事件

- (void)refreshDown:(BaseTableView *)tableView;

//上拉事件

- (void)refreshUp:(BaseTableView *)tableView;


@end


#import "EGORefreshTableHeaderView.h"

@interface BaseTableView :UITableView<UITableViewDataSource,UITableViewDelegate,EGORefreshTableHeaderDelegate>

{

   EGORefreshTableHeaderView *_refreshHeaderView;

   BOOL _reloading;

   UIButton *_moreButton;

}

@property (nonatomic,assign)BOOL isMore;

@property (nonatomic,assign)BOOL isrefreshHeader;

@property (nonatomic,retain)NSArray *dataList;

@property (nonatomic,assign)id<BaseTableViewDelegate> baseTableViewDelegate;


//关闭上拉加载更多

- (void)closeRefreshUp;

//关闭下拉刷新

- (void)doneLoadingTableViewData;

@end



#import "BaseTableView.h"


@implementation BaseTableView


- (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style

{

   self = [superinitWithFrame:frame style:style];

   if (self) {

        // Initialization code

        [self_initViews];

    }

    return self;

}

- (void)_initViews

{

    //创建下拉刷新控件

    _refreshHeaderView = [[EGORefreshTableHeaderViewalloc]initWithFrame:CGRectMake(0,.0f - self.height,kScreenWidth,self.height)];

    _refreshHeaderView.backgroundColor = [UIColorclearColor];

    _refreshHeaderView.delegate =self;

    self.isrefreshHeader =YES;

    //创建下拉加载更多

    _moreButton = [[UIButtonbuttonWithType:UIButtonTypeCustom]retain];

    _moreButton.backgroundColor = [UIColorclearColor];

   _moreButton.frame =CGRectMake(0,0, kScreenWidth,40);

    [_moreButtonsetTitle:@"上拉加载更多..." forState:UIControlStateNormal];

    [_moreButtonsetTitleColor:[UIColorblackColor] forState:UIControlStateNormal];

    _moreButton.titleLabel.font = [UIFont boldSystemFontOfSize:16.0f];

    [_moreButtonaddTarget:selfaction:@selector(loadMoreAction)forControlEvents:UIControlEventTouchUpInside];

    

    UIActivityIndicatorView *actvityView = [[UIActivityIndicatorViewalloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

    actvityView.frame =CGRectMake(80,10, 20, 20);

    [actvityViewstopAnimating];

    actvityView.tag =2014;

    [_moreButtonaddSubview:actvityView];

    [actvityViewrelease];

   self.isMore =YES;

    

    //设置标示图的代理对象

    self.dataSource =self;

   self.delegate =self;

    //去除背景颜色

    self.backgroundColor = [UIColorclearColor];

    self.backgroundView =nil;

}


- (void)loadMoreAction

{

    //让按钮显示正在加载...

    [_moreButtonsetTitle:@"正在加载..." forState:UIControlStateNormal];

    UIActivityIndicatorView *actView = (UIActivityIndicatorView *)[_moreButtonviewWithTag:2014];

    [actViewstartAnimating];

   if ([self.baseTableViewDelegaterespondsToSelector:@selector(refreshUp:)]) {

        [self.baseTableViewDelegaterefreshUp:self];

    }

}


//关闭上拉加载更多

- (void)closeRefreshUp

{

    //让按钮显示正在加载...

    [_moreButtonsetTitle:@"上拉加载更多..." forState:UIControlStateNormal];

    UIActivityIndicatorView *actView = (UIActivityIndicatorView *)[_moreButtonviewWithTag:2014];

    [actViewstopAnimating];

}

//控制当前上拉控件是否存在

- (void)setIsMore:(BOOL)isMore

{

   if (_isMore != isMore) {

       _isMore = isMore;

       if (_isMore ==YES) {

           self.tableFooterView =_moreButton;

        }else {

           self.tableFooterView =nil;

        }

    }

}


//控制当前下拉控件是否存在

- (void)setIsrefreshHeader:(BOOL)isrefreshHeader

{

   if (_isrefreshHeader != isrefreshHeader) {

       _isrefreshHeader = isrefreshHeader;

       if (_isrefreshHeader ==YES ) {

            [selfaddSubview:_refreshHeaderView];

        }else {

            [_refreshHeaderViewremoveFromSuperview];

        }

    }

}


//下拉刷新

#pragma mark -

#pragma mark Data Source Loading / Reloading Methods

//显示下拉加载

- (void)showRefreshHeader {

    [_refreshHeaderViewinitLoading:self];

}


- (void)reloadTableViewDataSource{

_reloading =YES;

}


- (void)doneLoadingTableViewData{

_reloading =NO;

[_refreshHeaderViewegoRefreshScrollViewDataSourceDidFinishedLoading:self];

}



#pragma mark -

#pragma mark UIScrollViewDelegate Methods


- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

[_refreshHeaderViewegoRefreshScrollViewDidScroll:scrollView];

    

}


- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

[_refreshHeaderViewegoRefreshScrollViewDidEndDragging:scrollView];

    //上拉刷新

   float height= scrollView.contentOffset.y + scrollView.height -scrollView.contentSize.height;

    

   if (height >= 40 &&self.isMore ==YES) {

        [selfloadMoreAction];

    }

}



#pragma mark -

#pragma mark EGORefreshTableHeaderDelegate Methods

//下拉到一定距离,手指放开时调用

- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{

[selfreloadTableViewDataSource];

   if ([self.baseTableViewDelegaterespondsToSelector:@selector(refreshDown:)]) {

        [self.baseTableViewDelegaterefreshDown:self];

    }

    //停止加载,弹回下拉

//    [self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];

}


- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{

return_reloading;// should return if data source model is reloading

}


//取得下拉刷新的时间

- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{

return [NSDatedate]; // should return date data source was last changed

}





0 0