这两天公司主程要求在项目一些模块中添加下拉刷新,其实项目中本来就有,使用的是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
正在加载信息~
推荐阅读
Swift开发之NSURLSession的使用(GET和POST)
最新回复 (0)
站点信息
- 文章2302
- 用户1336
- 访客10970171
每日一句
Qingming Festival invites us to honor ancestors with quiet reflection and respect.
清明节邀请我们以静思与敬意祭奠祖先。
清明节邀请我们以静思与敬意祭奠祖先。
新会员