免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1547 | 回复: 1
打印 上一主题 下一主题

下拉刷新的实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-12 21:09 |只看该作者 |倒序浏览

下拉刷新的实现









首先,用到一个开源框架,可以去https://github.com/enormego/EGOTableViewPullRefresh下载。



然后,将里面的EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m拷到相应的项目里,在需要下拉刷新的页面对应的视图控制器中添加以下代码。



头文件:





Ios代码
  1. 1.#import "EGORefreshTableHeaderView.h"  
  2. 2.  
  3. 3.@interface RootViewController : UITableViewController  <EGORefreshTableHeaderDelegate, UITableViewDelegate, UITableViewDataSource>{     
  4. 4.    EGORefreshTableHeaderView *_refreshHeaderView;  
  5. 5.    BOOL _reloading;  
  6. 6.}  
  7. 7.  
  8. 8.- (void)reloadTableViewDataSource;  
  9. 9.- (void)doneLoadingTableViewData;  
  10. 10.@end  
复制代码
实现文件:





Ios代码
  1. 1.#import "RootViewController.h"  
  2. 2.  
  3. 3.@implementation RootViewController  
  4. 4.  
  5. 5.- (void)viewDidLoad {  
  6. 6.    [super viewDidLoad];  
  7. 7.      
  8. 8.    if (_refreshHeaderView == nil) {         
  9. 9.        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)];  
  10. 10.        view.delegate = self;  
  11. 11.        [self.tableView addSubview:view];  
  12. 12.        _refreshHeaderView = view;  
  13. 13.        [view release];      
  14. 14.    }  
  15. 15.      
  16. 16.    [_refreshHeaderView refreshLastUpdatedDate];      
  17. 17.}  
  18. 18.  
  19. 19.#pragma mark -  
  20. 20.#pragma mark UITableViewDataSource  
  21. 21.  
  22. 22.- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {  
  23. 23.    return 10;  
  24. 24.}  
  25. 25.  
  26. 26.- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {  
  27. 27.    return 4;  
  28. 28.}  
  29. 29.  
  30. 30.- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
  31. 31.      
  32. 32.    static NSString *CellIdentifier = @"Cell";  
  33. 33.      
  34. 34.    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
  35. 35.    if (cell == nil) {  
  36. 36.        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];  
  37. 37.    }  
  38. 38.      
  39. 39.    return cell;  
  40. 40.}  
  41. 41.  
  42. 42.- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{      
  43. 43.    return [NSString stringWithFormat:@"Section %i", section];   
  44. 44.}  
  45. 45.  
  46. 46.#pragma mark -  
  47. 47.#pragma mark Data Source Loading / Reloading Methods  
  48. 48.  
  49. 49.- (void)reloadTableViewDataSource{  
  50. 50.    _reloading = YES;     
  51. 51.}  
  52. 52.  
  53. 53.- (void)doneLoadingTableViewData{  
  54. 54.    _reloading = NO;  
  55. 55.    [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];     
  56. 56.}  
  57. 57.  
  58. 58.#pragma mark -  
  59. 59.#pragma mark UIScrollViewDelegate Methods  
  60. 60.  
  61. 61.- (void)scrollViewDidScroll:(UIScrollView *)scrollView{      
  62. 62.    [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];        
  63. 63.}  
  64. 64.  
  65. 65.- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{      
  66. 66.    [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];   
  67. 67.}  
  68. 68.  
  69. 69.#pragma mark -  
  70. 70.#pragma mark EGORefreshTableHeaderDelegate Methods  
  71. 71.  
  72. 72.- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{      
  73. 73.    [self reloadTableViewDataSource];  
  74. 74.    [self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];     
  75. 75.}  
  76. 76.  
  77. 77.- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{   
  78. 78.    return _reloading;   
  79. 79.}  
  80. 80.  
  81. 81.- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{   
  82. 82.    return [NSDate date];     
  83. 83.}  
  84. 84.  
  85. 85.#pragma mark -  
  86. 86.#pragma mark Memory Management  
  87. 87.  
  88. 88.- (void)didReceiveMemoryWarning {  
  89. 89.    [super didReceiveMemoryWarning];  
  90. 90.}  
  91. 91.  
  92. 92.- (void)viewDidUnload {  
  93. 93.    _refreshHeaderView=nil;  
  94. 94.}  
  95. 95.  
  96. 96.- (void)dealloc {     
  97. 97.    _refreshHeaderView = nil;  
  98. 98.    [super dealloc];  
  99. 99.}  
  100. 100.  
  101. 101.@end  
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-03-12 21:09 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP