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

下拉刷新类库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 = [super initWithFrame:frame style:style];

    if (self) {

        // Initialization code

        [self _initViews];

    }

    return self;

}

- (void)_initViews

{

    //创建下拉刷新控件

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

    _refreshHeaderView.backgroundColor = [UIColor clearColor];

    _refreshHeaderView.delegate = self;

    self.isrefreshHeader = YES;

    //创建下拉加载更多

    _moreButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];

    _moreButton.backgroundColor = [UIColor clearColor];

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

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

    [_moreButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

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

    [_moreButton addTarget:self action:@selector(loadMoreAction) forControlEvents:UIControlEventTouchUpInside];

    

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

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

    [actvityView stopAnimating];

    actvityView.tag = 2014;

    [_moreButton addSubview:actvityView];

    [actvityView release];

    self.isMore = YES;

    

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

    self.dataSource = self;

    self.delegate = self;

    //去除背景颜色

    self.backgroundColor = [UIColor clearColor];

    self.backgroundView = nil;

}


- (void)loadMoreAction

{

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

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

    UIActivityIndicatorView *actView = (UIActivityIndicatorView *)[_moreButton viewWithTag:2014];

    [actView startAnimating];

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

        [self.baseTableViewDelegate refreshUp:self];

    }

}


//关闭上拉加载更多

- (void)closeRefreshUp

{

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

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

    UIActivityIndicatorView *actView = (UIActivityIndicatorView *)[_moreButton viewWithTag:2014];

    [actView stopAnimating];

}

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

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

            [self addSubview:_refreshHeaderView];

        } else {

            [_refreshHeaderView removeFromSuperview];

        }

    }

}


//下拉刷新

#pragma mark -

#pragma mark Data Source Loading / Reloading Methods

//显示下拉加载

- (void)showRefreshHeader {

    [_refreshHeaderView initLoading:self];

}


- (void)reloadTableViewDataSource{

_reloading = YES;

}


- (void)doneLoadingTableViewData{

_reloading = NO;

[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self];

}



#pragma mark -

#pragma mark UIScrollViewDelegate Methods


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

[_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];

    

}


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

[_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];

    //上拉刷新

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

    

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

        [self loadMoreAction];

    }

}



#pragma mark -

#pragma mark EGORefreshTableHeaderDelegate Methods

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

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

[self reloadTableViewDataSource];

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

        [self.baseTableViewDelegate refreshDown: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 [NSDate date]; // should return date data source was last changed

}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值