zoukankan      html  css  js  c++  java
  • IOS怎么实现一个UITableView的下拉刷新

    採用的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下载

  • 相关阅读:
    后缀自动机/回文自动机/AC自动机/序列自动机----各种自动机(自冻鸡) 题目泛做
    BZOJ 1001 狼抓兔子 (网络流最小割/平面图的对偶图的最短路)
    FFT与多项式、生成函数题目泛做
    BZOJ 2243 SDOI 2011染色
    莫队/分块 题目泛做
    Cogs 12 运输问题2 (有上下界网络流)
    可并堆/左偏树 题目泛做
    TC快速搜索在win10下不可用
    (转)Tomcat调优
    (转)Tomcat文件详解
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7125150.html
Copyright © 2011-2022 走看看