EGORefreshTableHeaderView —— UITableView下拉刷新页面的实现

来源:互联网 发布:access数据库编程 编辑:程序博客网 时间:2024/05/23 12:53

实现的开源框架是:https://github.com/enormego/EGOTableViewPullRefresh

实现过程很简单,下载相应的demo,然后拷贝资源文件和EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m到相依的工程中.在table所在的类中添加如下代码:

01#import <UIKit/UIKit.h>
02#import "EGORefreshTableHeaderView.h"
03<a href="http://my.oschina.net/interface" class="referer"target="_blank">@interface</a> iphone_navtaViewController : UIViewController
04<UITableViewDelegate,UITableViewDataSource,EGORefreshTableHeaderDelegate>{
05    BOOL isflage;
06    IBOutlet UITableView *myTableView;
07   EGORefreshTableHeaderView *_refreshHeaderView;
08    BOOL _reloading;
09}
10@property (nonatomic,retain) UITableView *myTableView;
11- (void)reloadTableViewDataSource;
12- (void)doneLoadingTableViewData;
13@end

实现方法:

01#import "iphone_navtaViewController.h"
02@implementation iphone_navtaViewController
03@synthesize myTableView;
04- (void)viewDidLoad {
05    [super viewDidLoad];
06    if (_refreshHeaderView == nil) {
07        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)];
08        view1.delegate = self;
09        [self.myTableView addSubview:view1];
10        _refreshHeaderView = view1;
11        [view1 release];
12    }
13    [_refreshHeaderView refreshLastUpdatedDate];
14}
15- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
16    return (interfaceOrientation == UIInterfaceOrientationPortrait);
17}
18- (void)didReceiveMemoryWarning {
19    [super didReceiveMemoryWarning];
20}
21- (void)viewDidUnload {
22    self.myTableView=nil;
23    _refreshHeaderView=nil;
24}
25- (void)dealloc {
26    _refreshHeaderView=nil;
27    [self.myTableView release];
28    [super dealloc];
29}
30#pragma mark –
31#pragma mark onClick
32-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
33{
34      isflage=!isflage;
35    [super.navigationController setNavigationBarHidden:isflage animated:TRUE];
36    [super.navigationController setToolbarHidden:isflage animated:TRUE];
37}
38#pragma mark –
39#pragma mark UITableView
40- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
41    return 1;
42}
43- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
44    return 3;
45}
46- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
47    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"tag"];
48    if (cell==nil) {
49        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
50                                       reuseIdentifier:@"tag"] autorelease];
51    }
52    //表格设计
53    return cell;
54}
55-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
56{
57    return 100;
58}
59 
60#pragma mark –
61#pragma mark Data Source Loading / Reloading Methods
62 
63- (void)reloadTableViewDataSource{
64    NSLog(@"==开始加载数据");
65    _reloading = YES;
66}
67 
68- (void)doneLoadingTableViewData{
69    NSLog(@"===加载完数据");
70    _reloading = NO;
71    [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.myTableView];
72}
73#pragma mark –
74#pragma mark UIScrollViewDelegate Methods
75- (void)scrollViewDidScroll:(UIScrollView *)scrollView{  
76    [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];
77}
78 
79- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
80    [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];
81}
82#pragma mark –
83#pragma mark EGORefreshTableHeaderDelegate Methods
84- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{
85    [self reloadTableViewDataSource];
86    [self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];
87}
88 
89- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{
90    return _reloading;
91}
92- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{
93    return [NSDate date];   
94}
95@end

一个最重要的步骤,就是要添加QuartzCore.framework组建。

然后运行即可。

    原创粉丝点击