然后拷贝资源文件和EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m到相依的工程中.
添加QuartzCore.framework组建:
在tableview所在的类中添加如下代码:
#import <UIKit/UIKit.h> #import "EGORefreshTableHeaderView.h" @interface TableViewController : UITableViewController<UITableViewDataSource,UITableViewDelegate,EGORefreshTableHeaderDelegate>{ BOOL isflage; BOOL _reloading; EGORefreshTableHeaderView *_refreshHeaderView; } @property (strong, nonatomic) IBOutlet UITableView *myTableView; //重新加载时调用的的方法 - (void)reloadTableViewDataSource; //完成加载时调用的方法 - (void)doneLoadingTableViewData; @end
//
// TableViewController.m
// EGOTableViewPullRefreshDemo
//
// Created by WildCat on 13-8-16.
// Copyright (c) 2013年 wildcat. All rights reserved.
//
#import "TableViewController.h"
@interface TableViewController ()<EGORefreshTableHeaderDelegate>
@end
@implementation TableViewController
@synthesize myTableView;
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
if (_refreshHeaderView==nil) {
//初始化下拉刷新空间
EGORefreshTableHeaderView *view1=[[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 10.0f-self.myTableView.bounds.size.height, self.myTableView.bounds.size.width, self.view.bounds.size.height)];
view1.delegate = self;
[self.myTableView addSubview:view1];
_refreshHeaderView = view1;
}
[_refreshHeaderView refreshLastUpdatedDate];
}
- (void)viewDidUnload
{
[self setMyTableView:nil];
_refreshHeaderView=nil;
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark onClick
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
isflage=!isflage;
[super.navigationController setNavigationBarHidden:isflage animated:TRUE];
[super.navigationController setToolbarHidden:isflage animated:TRUE];
}
#pragma mark - Table view data source
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return [NSString stringWithFormat:@"标题"];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 10;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell==nil) {
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text=[NSString stringWithFormat:@"这是第 %i 行",indexPath.row];
return cell;
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
/*
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
*/
}
#pragma mark –
#pragma mark Data Source Loading / Reloading Methods
//重新加载时调用
- (void)reloadTableViewDataSource{
NSLog(@"==开始加载数据");
_reloading = YES;
}
//完成加载时调用的方法
- (void)doneLoadingTableViewData{
NSLog(@"===加载完数据");
_reloading = NO;
[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.myTableView];
}
#pragma mark –
#pragma mark UIScrollViewDelegate Methods
//滚动控件时的委托方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
[_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
[_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];
}
#pragma mark –
#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];
}
@end
这样就可以成功运行了,如果想把加载改为汉语可以在:
EGORefreshTableHeaderView.m源码中的
- (void)setState:(EGOPullRefreshState)aState函数的相应位置修改:
- (void)setState:(EGOPullRefreshState)aState{ switch (aState) { case EGOOPullRefreshPulling: _statusLabel.text = NSLocalizedString(@"松开可以刷新...", @"Release to refresh status"); [CATransaction begin]; [CATransaction setAnimationDuration:FLIP_ANIMATION_DURATION]; _arrowImage.transform = CATransform3DMakeRotation((M_PI / 180.0) * 180.0f, 0.0f, 0.0f, 1.0f); [CATransaction commit]; break; case EGOOPullRefreshNormal: if (_state == EGOOPullRefreshPulling) { [CATransaction begin]; [CATransaction setAnimationDuration:FLIP_ANIMATION_DURATION]; _arrowImage.transform = CATransform3DIdentity; [CATransaction commit]; } _statusLabel.text = NSLocalizedString(@"下拉刷新...", @"Pull down to refresh status"); [_activityView stopAnimating]; [CATransaction begin]; [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; _arrowImage.hidden = NO; _arrowImage.transform = CATransform3DIdentity; [CATransaction commit]; [self refreshLastUpdatedDate]; break; case EGOOPullRefreshLoading: _statusLabel.text = NSLocalizedString(@"加载中...", @"Loading Status"); [_activityView startAnimating]; [CATransaction begin]; [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; _arrowImage.hidden = YES; [CATransaction commit]; break; default: break; } _state = aState; }转载请注明: