您的位置:首页 > 产品设计 > UI/UE

ios:UITableView下拉刷新的使用

2012-11-02 16:58 483 查看
本文用到的是: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;

如下:

[cpp] view
plaincopyprint?

#import <UIKit/UIKit.h>

#import "EGORefreshTableHeaderView.h"

@interface KeHuanWangFirstViewController : UIViewController<UITableViewDataSource,UITableViewDelegate,UIScrollViewDelegate,EGORefreshTableHeaderDelegate>{

EGORefreshTableHeaderView *_refreshHeaderView;

BOOL _reloading;//主要是记录是否在刷新中

}

//这两个是下拉刷新的事件

- (void)reloadTableViewDataSource;

- (void)doneLoadingTableViewData;

3. .m文件中的操作

[cpp] view
plaincopyprint?

//下拉刷新相关代码---------------

//重加载事件

- (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方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: