[ZT]UITableView下拉刷新页面的兑现
以前看到facebook,人人和其他的一些应用,很多都使用了下拉列表,列表就重新加载数据的应用.感觉用户体验很好,但是一直没有时间找相应的解决方法,今天终于有时间整理一下代码: 下图是实现的效果图,当用户下拉列表的时候,就出现向上的箭头. 实现的开源框架是:https://github.com/enormego/EGOTableViewPullRefresh 实现过程很简单,下载相应的demo,然后拷贝资源文件和EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m到相依的工程中.在table所在的类中添加如下代码: #import <UIKit/UIKit.h> 实现方法: #import "iphone_navtaViewController.h" #pragma mark – - (void)reloadTableViewDataSource{ - (void)doneLoadingTableViewData{ - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ - (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{ 一个最重要的步骤,就是要添加QuartzCore.framework组建。 然后运行即可。UITableView下拉刷新页面的实现
#import "EGORefreshTableHeaderView.h"
@interface iphone_navtaViewController : UIViewController
<UITableViewDelegate,UITableViewDataSource,EGORefreshTableHeaderDelegate>{
BOOL isflage;
IBOutlet UITableView *myTableView;
EGORefreshTableHeaderView *_refreshHeaderView;
BOOL _reloading;
}
@property (nonatomic,retain) UITableView *myTableView;
- (void)reloadTableViewDataSource;
- (void)doneLoadingTableViewData;
@end
@implementation iphone_navtaViewController
@synthesize myTableView;
- (void)viewDidLoad {
[super viewDidLoad];
if (_refreshHeaderView == nil) {
EGORefreshTableHeaderView *view1 = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 10.0f – self.myTableView.bounds.size.height, self.myTableView.frame.size.width, self.view.bounds.size.height)];
view1.delegate = self;
[self.myTableView addSubview:view1];
_refreshHeaderView = view1;
[view1 release];
}
[_refreshHeaderView refreshLastUpdatedDate];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
self.myTableView=nil;
_refreshHeaderView=nil;
}
- (void)dealloc {
_refreshHeaderView=nil;
[self.myTableView release];
[super dealloc];
}
#pragma mark –
#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 –
#pragma mark UITableView
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"tag"];
if (cell==nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:@"tag"] autorelease];
}
//表格设计
return cell;
}
-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 100;
}
#pragma mark Data Source Loading / Reloading Methods
NSLog(@"==开始加载数据");
_reloading = YES;
}
NSLog(@"===加载完数据");
_reloading = NO;
[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.myTableView];
}
#pragma mark –
#pragma mark UIScrollViewDelegate Methods
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
[_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];
}
[_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];
}
#pragma mark –
#pragma mark EGORefreshTableHeaderDelegate Methods
- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{
[self reloadTableViewDataSource];
[self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];
}
return _reloading;
}
- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{
return [NSDate date];
}
@end