集成下拉刷新数据上拉刷新更多数据
来源:互联网 发布: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
}
- 集成下拉刷新数据上拉刷新更多数据
- RecyclerView的下拉刷新数据 与上拉加载更多
- Swift快速集成下拉刷新和上拉加载更多
- 快速集成Android实现下拉刷新上拉加载更多
- SmartRefreshLayout集成笔记,实现下拉刷新上拉加载更多。
- IOS数据刷新(上拉刷新和下拉刷新)
- IOS Table 下拉,上拉刷新数据
- 下拉/上拉刷新数据(OC)
- Android自定义PullListView下拉刷新,上拉加载更多分页数据
- 关于Android 下拉刷新,上拉加载更多数据功能的详细解析
- Android ListView下拉与上拉刷新加载更多数据 二
- SwipeRefreshLayout配合RecyclerView实现下拉刷新和上拉加载更多以及没有数据的显示
- SwipeRefreshLayout配合RecyclerView实现下拉刷新和上拉加载更多以及没有数据的显示
- 第三方 MJRefresh 实现 iOS中 上拉加载更多,下拉刷新数据
- 下拉刷新和上拉刷新时候会有数据
- Android ListView 下拉刷新 上拉更多
- android listview 下拉刷新,上拉更多
- Listview 下拉刷新,上拉加载更多
- 编程之美:饮料供货
- primefaces4 翻页时更新分页footer,totalRecords的更新
- hdu 1242 Rescue
- 区间调度
- 生命中,很多事是事在人为
- 集成下拉刷新数据上拉刷新更多数据
- git 工程kernel编译注意事项
- Eclipse 使用经验总结
- 生活是什么
- nyoj-16 矩形嵌套 (DAG上的动态规划,记忆化搜索)
- 2-1-学生成绩统计
- POJ 2341 Expedition(最大值堆)
- 冗余关系
- PAT (Basic) 1011~1015