Chinaunix
标题:
下拉刷新的实现
[打印本页]
作者:
feiyang10086
时间:
2012-03-12 21:09
标题:
下拉刷新的实现
下拉刷新的实现
首先,用到一个开源框架,可以去
https://github.com/enormego/EGOTableViewPullRefresh
下载。
然后,将里面的EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m拷到相应的项目里,在需要下拉刷新的页面对应的视图控制器中添加以下代码。
头文件:
Ios代码
1.#import "EGORefreshTableHeaderView.h"
2.
3.@interface RootViewController : UITableViewController <EGORefreshTableHeaderDelegate, UITableViewDelegate, UITableViewDataSource>{
4. EGORefreshTableHeaderView *_refreshHeaderView;
5. BOOL _reloading;
6.}
7.
8.- (void)reloadTableViewDataSource;
9.- (void)doneLoadingTableViewData;
10.@end
复制代码
实现文件:
Ios代码
1.#import "RootViewController.h"
2.
3.@implementation RootViewController
4.
5.- (void)viewDidLoad {
6. [super viewDidLoad];
7.
8. if (_refreshHeaderView == nil) {
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. view.delegate = self;
11. [self.tableView addSubview:view];
12. _refreshHeaderView = view;
13. [view release];
14. }
15.
16. [_refreshHeaderView refreshLastUpdatedDate];
17.}
18.
19.#pragma mark -
20.#pragma mark UITableViewDataSource
21.
22.- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
23. return 10;
24.}
25.
26.- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
27. return 4;
28.}
29.
30.- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
31.
32. static NSString *CellIdentifier = @"Cell";
33.
34. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
35. if (cell == nil) {
36. cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
37. }
38.
39. return cell;
40.}
41.
42.- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
43. return [NSString stringWithFormat:@"Section %i", section];
44.}
45.
46.#pragma mark -
47.#pragma mark Data Source Loading / Reloading Methods
48.
49.- (void)reloadTableViewDataSource{
50. _reloading = YES;
51.}
52.
53.- (void)doneLoadingTableViewData{
54. _reloading = NO;
55. [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];
56.}
57.
58.#pragma mark -
59.#pragma mark UIScrollViewDelegate Methods
60.
61.- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
62. [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];
63.}
64.
65.- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
66. [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];
67.}
68.
69.#pragma mark -
70.#pragma mark EGORefreshTableHeaderDelegate Methods
71.
72.- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{
73. [self reloadTableViewDataSource];
74. [self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];
75.}
76.
77.- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{
78. return _reloading;
79.}
80.
81.- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{
82. return [NSDate date];
83.}
84.
85.#pragma mark -
86.#pragma mark Memory Management
87.
88.- (void)didReceiveMemoryWarning {
89. [super didReceiveMemoryWarning];
90.}
91.
92.- (void)viewDidUnload {
93. _refreshHeaderView=nil;
94.}
95.
96.- (void)dealloc {
97. _refreshHeaderView = nil;
98. [super dealloc];
99.}
100.
101.@end
复制代码
作者:
芯忻相依
时间:
2012-03-12 21:09
谢谢分享
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2