iOS下拉刷新的详细介绍

来源:互联网 发布:齐柏林飞船知乎 编辑:程序博客网 时间:2024/06/05 17:43

此代码来自Enormego 团队,一个来自美国的天才、热心的开发团队。

下载地址: 

在自己工程中的引用步骤:

一、 从上面的链接下载资源文件,将EGORefreshTableHeaderView.hEGORefreshTableHeaderView.m两个文件,以及Enormego提供的那一套图片包拖进你的工程里。

二、找到你的  UITableViewController 的 .h 文件,添加相应的代码:

[html] view plaincopyprint?
  1. #import "EGORefreshTableHeaderView.h"  
  2.   
  3. @interface RootViewController : UITableViewController  {  
  4.   
  5. EGORefreshTableHeaderView *_refreshHeaderView;  
  6.   
  7. //  Reloading var should really be your tableviews datasource  
  8. //  Putting it here for demo purposes  
  9. BOOL _reloading;  
  10. }  
  11.   
  12. - (void)reloadTableViewDataSource;  
  13. - (void)doneLoadingTableViewData;  
  14. @end  

三、切换到你的  UITableViewController 的 .m 文件,添加相应的代码:

[html] view plaincopyprint?
  1. - (void)viewDidLoad {  
  2. [super viewDidLoad];  
  3.   
  4. if (_refreshHeaderView == nil) {  
  5.   
  6. 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)];  
  7. view.delegate = self;  
  8. [self.tableView addSubview:view];  
  9. _refreshHeaderView = view;  
  10. [view release];  
  11.   
  12. }  
  13.   
  14. //  update the last update date  
  15. [_refreshHeaderView refreshLastUpdatedDate];  
  16. }  

[html] view plaincopyprint?
  1. #pragma mark -  
  2. #pragma mark Data Source Loading / Reloading Methods  
  3.   
  4. - (void)reloadTableViewDataSource{  
  5.   
  6. //  should be calling your tableviews data source model to reload  
  7. //  put here just for demo  
  8. _reloading = YES;  
  9.   
  10. }  
  11.   
  12. - (void)doneLoadingTableViewData{  
  13.   
  14. //  model should call this when its done loading  
  15. _reloading = NO;  
  16. [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];  
  17.   
  18. }  
  19.   
  20. #pragma mark -  
  21. #pragma mark UIScrollViewDelegate Methods  
  22.   
  23. - (void)scrollViewDidScroll:(UIScrollView *)scrollView{  
  24.   
  25. [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];  
  26.   
  27. }  
  28.   
  29. - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{  
  30.   
  31. [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];  
  32.   
  33. }  
  34.   
  35. #pragma mark -  
  36. #pragma mark EGORefreshTableHeaderDelegate Methods  
  37.   
  38. - (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{  
  39.   
  40. [self reloadTableViewDataSource];  
  41. [self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];  
  42.   
  43. }  
  44.   
  45. - (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{  
  46.   
  47. return _reloading; // should return if data source model is reloading  
  48.   
  49. }  
  50.   
  51. - (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{  
  52.   
  53. return [NSDate date]; // should return date data source was last changed  
  54.   
  55. }  

四、最后呢,别忘了内存管理习惯:

[html] view plaincopyprint?
  1. - (void)viewDidUnload {  
  2. _refreshHeaderView=nil;  
  3. }  
  4.   
  5. - (void)dealloc {  
  6.   
  7. _refreshHeaderView = nil;  
  8. [super dealloc];  
  9. }  
五、编译你的工程,打开 simulator ,看看效果吧。包你满意。 偷笑大笑大笑大笑

效果图:


原文地址:http://blog.csdn.net/jinglijun/article/details/8150638

原创粉丝点击