刷新和加载更多

TableView

/**

 *  集成刷新控件

 */

- (void)setupRefresh

{

    // 1.下拉刷新(进入刷新状态就会调用self的headerRereshing)

//    [self.tableView addHeaderWithTarget:self action:@selector(headerRereshing)];

    // dateKey用于存储刷新时间,可以保证不同界面拥有不同的刷新时间

    [self.tableView addHeaderWithTarget:self action:@selector(headerRereshing) dateKey:@"table"];

#warning 自动刷新(一进入程序就下拉刷新)

    [self.tableView headerBeginRefreshing];

    

    // 2.上拉加载更多(进入刷新状态就会调用self的footerRereshing)

    [self.tableView addFooterWithTarget:self action:@selector(footerRereshing)];

    

    // 设置文字(也可以不设置,默认的文字在MJRefreshConst中修改)

    self.tableView.headerPullToRefreshText = @"下拉可以刷新了";

    self.tableView.headerReleaseToRefreshText = @"松开马上刷新了";

    self.tableView.headerRefreshingText = @"MJ哥正在帮你刷新中,不客气";

    

    self.tableView.footerPullToRefreshText = @"上拉可以加载更多数据了";

    self.tableView.footerReleaseToRefreshText = @"松开马上加载更多数据了";

    self.tableView.footerRefreshingText = @"MJ哥正在帮你加载中,不客气";

}

 

#pragma mark 开始进入刷新状态

- (void)headerRereshing

{

    // 1.添加假数据

    for (int i = 0; i<5; i++) {

        [self.fakeData insertObject:MJRandomData atIndex:0];

    }

    

    // 2.模拟2秒后刷新表格UI(真实开发中,可以移除这段gcd代码)

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        // 刷新表格

        [self.tableView reloadData];

        

        // (最好在刷新表格后调用)调用endRefreshing可以结束刷新状态

        [self.tableView headerEndRefreshing];

    });

}

 

- (void)footerRereshing

{

    // 1.添加假数据

    for (int i = 0; i<5; i++) {

        [self.fakeData addObject:MJRandomData];

    }

    

    // 2.模拟2秒后刷新表格UI(真实开发中,可以移除这段gcd代码)

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        // 刷新表格

        [self.tableView reloadData];

        

        // (最好在刷新表格后调用)调用endRefreshing可以结束刷新状态

        [self.tableView footerEndRefreshing];

    });

}

 

 

CollectionView

- (void)addHeader

{

    __unsafe_unretained typeof(self) vc = self;

    // 添加下拉刷新头部控件

    [self.collectionView addHeaderWithCallback:^{

        // 进入刷新状态就会回调这个Block

        

        // 增加5条假数据

        for (int i = 0; i<5; i++) {

            [vc.fakeColors insertObject:MJRandomColor atIndex:0];

        }

        

        // 模拟延迟加载数据,因此2秒后才调用(真实开发中,可以移除这段gcd代码)

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

            [vc.collectionView reloadData];

            // 结束刷新

            [vc.collectionView headerEndRefreshing];

        });

    } dateKey:@"collection"];

    // dateKey用于存储刷新时间,也可以不传值,可以保证不同界面拥有不同的刷新时间

    

#warning 自动刷新(一进入程序就下拉刷新)

    [self.collectionView headerBeginRefreshing];

}

 

- (void)addFooter

{

    __unsafe_unretained typeof(self) vc = self;

    // 添加上拉刷新尾部控件

    [self.collectionView addFooterWithCallback:^{

        // 进入刷新状态就会回调这个Block

        

        // 增加5条假数据

        for (int i = 0; i<5; i++) {

            [vc.fakeColors addObject:MJRandomColor];

        }

        

        // 模拟延迟加载数据,因此2秒后才调用(真实开发中,可以移除这段gcd代码)

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

            [vc.collectionView reloadData];

            // 结束刷新

            [vc.collectionView footerEndRefreshing];

        });

    }];

}

 

posted on 2016-07-20 15:12  问题记录  阅读(214)  评论(0)    收藏  举报

导航