下拉刷新的实现
首先,用到一个开源框架,可以去https://github.com/enormego/EGOTableViewPullRefresh下载。
?
然后,将里面的EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m拷到相应的项目里,在需要下拉刷新的页面对应的视图控制器中添加以下代码。
?
头文件:
?
#import "RootViewController.h"@implementation RootViewController- (void)viewDidLoad { [super viewDidLoad];if (_refreshHeaderView == nil) {EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.tableView.bounds.size.height, self.view.frame.size.width, self.tableView.bounds.size.height)];view.delegate = self;[self.tableView addSubview:view];_refreshHeaderView = view;[view release];}[_refreshHeaderView refreshLastUpdatedDate];}#pragma mark -#pragma mark UITableViewDataSource- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 10;}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 4;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } return cell;}- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{return [NSString stringWithFormat:@"Section %i", section];}#pragma mark -#pragma mark Data Source Loading / Reloading Methods- (void)reloadTableViewDataSource{_reloading = YES;}- (void)doneLoadingTableViewData{_reloading = NO;[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];}#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]; }#pragma mark -#pragma mark Memory Management- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning];}- (void)viewDidUnload {_refreshHeaderView=nil;}- (void)dealloc {_refreshHeaderView = nil; [super dealloc];}@end?
最后,一个很重要的步骤,别忘了加入QuartzCore.framework框架。