使用系统自带的 UIRefreshControl 实现下拉刷新

简介:

UIRefreshControl 为 UITableViewController 中的一个属性,从以下可以看出, IOS6.0 以上才支持.

@property (nonatomic,retain) UIRefreshControl *refreshControl NS_AVAILABLE_IOS(6_0);


RootViewController.h
//  Copyright (c) 2014年 YouXian. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface RootViewController : UITableViewController

@end

RootViewController.m
//  Copyright (c) 2014年 YouXian. All rights reserved.
//

#import "RootViewController.h"

@interface RootViewController ()

@property (nonatomic) NSMutableArray *data;

@end

@implementation RootViewController


- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //初始化数据源
    _data = [[NSMutableArray alloc] init];

    //初始化refreshControl
    self.refreshControl = [[UIRefreshControl alloc] init];
    self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];
    [self.refreshControl addTarget:self
                            action:@selector(RefreshViewControlEventValueChanged)
                  forControlEvents:UIControlEventValueChanged];
}

- (void)RefreshViewControlEventValueChanged
{
    [self performSelector:@selector(getDataAndStopRefresh)
               withObject:nil
               afterDelay:2];
}

- (void)getDataAndStopRefresh
{
    //处理数据
    for (int i = 0; i <= arc4random() % 4; i++)
    {
        [_data addObject:[NSString stringWithFormat:@"%@", [NSDate date].description]];
    }

    //结束刷新(重要,只有先处理完了数据源,再执行方法 endRefreshing 让tableView回去)
    [self.refreshControl endRefreshing];
    
    //重新加载
    [self.tableView reloadData];
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return _data.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                      reuseIdentifier:CellIdentifier];
    }
    
    cell.textLabel.text = [NSString stringWithFormat:@"%@", _data[indexPath.row]];
    
    return cell;
}

@end

在下拉刷新后,只有执行了方法  [self.refreshControl endRefreshing];  才能够恢复,简单易用,不过需要在执行这个方法之前处理好一切的数据.

目录
相关文章
|
6月前
|
监控
如何解决UICollectionView不能下拉刷新问题
如何解决UICollectionView不能下拉刷新问题
96 0
|
JavaScript Linux
【unapp】上拉加载,下拉刷新
【unapp】上拉加载,下拉刷新
102 0
SwipeRefreshLayout 下拉刷新控件(二)
SwipeRefreshLayout 下拉刷新控件(二)
SwipeRefreshLayout 下拉刷新控件(一)
SwipeRefreshLayout 下拉刷新控件(一)
|
iOS开发
iOS开发 - 让tableView不能下拉刷新,可以上拉加载
iOS开发 - 让tableView不能下拉刷新,可以上拉加载
312 0
|
iOS开发
iOS ScrollView嵌套tableview左右滑动时禁止上下滑动
iOS ScrollView嵌套tableview左右滑动时禁止上下滑动
2008 0
|
Android开发
GridView基于pulltorefresh实现下拉刷新 上拉加载更多功能
GridView基于pulltorefresh实现下拉刷新 上拉加载更多功能
RecyclerView的下拉刷新和加载更多 动画
下拉刷新和加载更多 1、https://github.com/jianghejie/XRecyclerView 2、http://blog.csdn.net/jabony/article/details/44780187   动画 1、https://github.
1947 0