本文用到的是:RefreshTable.
文件下载请移步:https://github.com/enormego/EGOTableViewPullRefresh
本来想传图的。可不知道怎么回事,无法上传。暂时不上传了
1.请将RefreshTableHeaderView的两个相关文件及图片文件 引入你的工程中
2.引入相关
.h中的操作
2.1 #import "EGORefreshTableHeaderView.h"
2.2 添加
EGORefreshTableHeaderDelegate ,还要记得引入UIScrollViewDelegate
2.3 在.h中添加
EGORefreshTableHeaderView *_refreshHeaderView;
BOOL _reloading;
2.4 添加两个方法
- (void)reloadTableViewDataSource;
- (void)doneLoadingTableViewData;
如下:
- #import <UIKit/UIKit.h>
- #import "EGORefreshTableHeaderView.h"
- @interface KeHuanWangFirstViewController : UIViewController<UITableViewDataSource,UITableViewDelegate,UIScrollViewDelegate,EGORefreshTableHeaderDelegate>{
- EGORefreshTableHeaderView *_refreshHeaderView;
- BOOL _reloading;//主要是记录是否在刷新中
- }
- //这两个是下拉刷新的事件
- - (void)reloadTableViewDataSource;
- - (void)doneLoadingTableViewData;
3. .m文件中的操作
- //下拉刷新相关代码---------------
- //重加载事件
- - (void) reloadTableViewDataSource{
- _reloading = YES;
- //这里引用你加载数据的方法
- }
- //加载结束事件
- - (void)doneLoadingTableViewData{
- // model should call this when its done loading
- _reloading = NO;
- if (得到的数组数是大于0的) {
- [self.table reloadData];
- }else{
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"获取数据失败或网络异常" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];
- [alert show];
- [alert release];
- }
- [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.table];
- }#pragma mark -#pragma mark UIScrollViewDelegate Methods
- //table也是scrollview所以只要滚动就会调用这个方法
- - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
- NSLog(@"Scrolling...");
- [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];
- }
- //滚动结束就会调用这个方法
- - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
- NSLog(@"Scrolling Stoped...");
- [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];
- }
- #pragma mark -
- #pragma mark EGORefreshTableHeaderDelegate Methods
- //释放更新
- - (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{
- //
- // [self reloadTableViewDataSource];
- [NSThread detachNewThreadSelector:@selector(reloadTableViewDataSource) toTarget:self withObject:nil];
- // [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
- }
- #pragma mark - View lifecycle
- //手动调用下拉刷新的代码 --------------
- -(void) ViewFrashData
- {
- [self.tabNews setContentOffset:CGPointMake(0, -75) animated:YES];
- [self performSelector:@selector(doneManualRefresh) withObject:nil afterDelay:0.4];
- }
- -(void)doneManualRefresh
- {
- [_refreshHeaderView egoRefreshScrollViewDidScroll:self.tabNews];
- [_refreshHeaderView egoRefreshScrollViewDidEndDragging:self.tabNews];
- }
- //下拉刷新相关代码---------------
- //手动调用下拉刷新的代码 --------------
- //刷新按钮事件
- - (void) reloadInfo
- {
- //手动下拉刷新相关
- [self ViewFrashData];
- }
- - (void)viewDidLoad
- {[super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- //下拉刷新相关
- if (
- _refreshHeaderView ==nil) {
- EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f,0.0f - self.tabNews.bounds.size.height,self.view.frame.size.width,self.tabNews.bounds.size.height)];
- //0,-416,320,416
- NSLog(@"%f",self.tabNews.bounds.size.height);
- view.delegate = self;
- [self.tabNewsaddSubview:view];
- _refreshHeaderView = view;
- [view release];
- }
- // update the last update date
- [_refreshHeaderViewrefreshLastUpdatedDate];
- //如果需要进入view或按刷新按钮就出现下拉加载效果。可以直接调用reloadInfo方法