这两天公司主程要求在项目一些模块中添加下拉刷新,其实项目中本来就有,使用的是EGO框架来做的,话说,国外的开源框架确实做的牛逼啊,先赞一个.但是这篇文章我打算不光去介绍如何使用EGO,自己找了一些资料,然后觉得有必要把现在流行使用的一些实现都给罗列出来,各位看官就可以根据自己的需求来选择用什么.现在开始: 1.EGO作为最多使用的,先介绍ta吧,代码如下:
第一步: 首先下载EGO框架 第二步: 导入QuartzCore.framework框架 第三部: 代码编写
这里的代码写到这里,我们看下效果.哦,对了,我在APPdelegate里写了一个导航控制器并设置tableview所在的控制器为根控制器
效果大家看到了,基本样子是出来了,但是我们还需要去实现一些EGO的代理方法,这样才能确保能看还能用.
第一步: 首先下载EGO框架 第二步: 导入QuartzCore.framework框架 第三部: 代码编写
#import "ViewController.h"
#import "EGORefreshTableHeaderView.h"
#define SCREEN_WIDTH self.view.frame.size.width
#define SCREEN_HEIGHT self.view.frame.size.height
@interface ViewController ()
{
EGORefreshTableHeaderView * _refreshHeaderView;
}
@property (nonatomic,weak) UITableView * tableView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//创建tableview
[self setupTableView];
//创建refreshHeaderView
[self setupRefreshHeaderView];
//刷新最后刷新时间
[_refreshHeaderView refreshLastUpdatedDate];
}
- (void)setupTableView
{
UITableView * tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
self.tableView = tableView;
[self.view addSubview:tableView];
tableView.showsVerticalScrollIndicator = NO;
tableView.delegate = self;
tableView.dataSource = self;
}
- (void)setupRefreshHeaderView
{
if (_refreshHeaderView == nil) {
_refreshHeaderView = [[EGORefreshTableHeaderView alloc]initWithFrame:CGRectMake(0.0f, 0.0f - self.tableView.bounds.size.height, SCREEN_WIDTH, self.tableView.bounds.size.height)];
_refreshHeaderView.delegate = self;
[self.tableView addSubview:_refreshHeaderView];
}
}
#pragma mark tableviewDataSourse
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 5;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * ID = @"cell";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];;
}
cell.textLabel.text = @"CJ";
return cell;
}
#pragma mark tableviewDelegate
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 50;
}
这里的代码写到这里,我们看下效果.哦,对了,我在APPdelegate里写了一个导航控制器并设置tableview所在的控制器为根控制器

效果大家看到了,基本样子是出来了,但是我们还需要去实现一些EGO的代理方法,这样才能确保能看还能用.
#pragma mark UIScrollViewDelegate Methods
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
[_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
[_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];
}
#pragma mark EGORefreshTableHeaderDelegate Methods
- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{
[self reloadTableViewDataSource];
[self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];
}
- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{
return _reloading; // 如果数据正在加载一定要返回
}
- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{
return [NSDate date]; // 返回时间
}
- (void)reloadTableViewDataSource{
// 在这里加载tableview的数据模型
_reloading = YES; //必须
}
- (void)doneLoadingTableViewData{
// 加载完数据调用这个方法,刷新tableview
_reloading = NO;
[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];
[self.tableView reloadData];
}

收藏的用户(0) X
正在加载信息~
推荐阅读
最新回复 (0)
站点信息
- 文章2313
- 用户1336
- 访客11756102
每日一句
More dreams are lost to self-doubt than to failure.
因自我怀疑而失去的梦想比因失败而失去的更多。
因自我怀疑而失去的梦想比因失败而失去的更多。
新会员