IOS怎么实现一个UITableView的下拉刷新

来源:互联网 发布:thinkpad8 win10优化 编辑:程序博客网 时间:2024/05/16 18:21

采用的EGORefreshTableHeaderView来实现:

在Controller上实现EGORefreshTableHeaderDelegate的delegate

@property(nonatomic)UITableView* tableView;@property(nonatomic)NSMutableArray* data;@property(nonatomic)EGORefreshTableHeaderView* refreshTableVIew;@property(nonatomic,assign)BOOL reloading;
先初始化:
- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view.       UIToolbar* bar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];        UIBarButtonItem* item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(click)];       [bar setItems:[NSArray arrayWithObjects:item, nil]];    [self.view addSubview:bar];    self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 44,320,460-44)];    [self.view addSubview:_tableView];    self.tableView.delegate = self;    self.tableView.dataSource = self;    _data = [[NSMutableArray alloc] init];    [_data addObject:@"aa"];    [_data addObject:@"cc"];        if (_refreshTableVIew == nil) {        EGORefreshTableHeaderView* refreshTableView = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0, -self.tableView.bounds.size.height, self.view.frame.size.width, self.tableView.bounds.size.height)];        refreshTableView.delegate = self;        [_tableView addSubview:refreshTableView];        _refreshTableVIew = refreshTableView;    }    }


下拉的时候会执行

- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{    _reloading = YES;    //开始刷新后执行后台线程,在此之前可以开启HUD或其他对UI进行阻塞    [NSThread detachNewThreadSelector:@selector(doInBackground) toTarget:self withObject:nil];}


-(void)doInBackground{    NSLog(@"do in background");    [_data addObject:@"ff"];    [NSThread sleepForTimeInterval:3];    [self performSelectorOnMainThread:@selector(loadedTableViewData) withObject:nil waitUntilDone:YES];}


-(void)loadedTableViewData{    _reloading = NO;    [_refreshTableVIew egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];    [self.tableView reloadData];}

这个方法表示正在刷新中

- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{    return _reloading;}



这个方法在显示时间在TableView的刷新块上 :

//返回刷新时间的回调方法-(NSDate *)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView *)view{    return [NSDate date];}

然后必须加上下面两个方法:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{    [_refreshTableVIew egoRefreshScrollViewDidScroll:scrollView];}-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{    [_refreshTableVIew egoRefreshScrollViewDidEndDragging:scrollView];}


代码可以在http://download.csdn.net/detail/baidu_nod/7599913下载

0 0
原创粉丝点击