ios 怎么刷新header里面的数据源

 我来答
昕菡浮牧懂0d
2015-01-25 · TA获得超过13.9万个赞
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.5亿
展开全部

采用的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];

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式