开发者社区> 游贤明> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用系统自带的 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]; 才能够恢复,简单易用,不过需要在执行这个方法之前处理好一切的数据.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【C 语言】Windows 下使用 gcc 编译器 ( 常用的编译器 | Qt 中的 gcc 编译器 | 独立安装 MinGW )(二)
【C 语言】Windows 下使用 gcc 编译器 ( 常用的编译器 | Qt 中的 gcc 编译器 | 独立安装 MinGW )(二)
45 0
【C 语言】Windows 下使用 gcc 编译器 ( 常用的编译器 | Qt 中的 gcc 编译器 | 独立安装 MinGW )(一)
【C 语言】Windows 下使用 gcc 编译器 ( 常用的编译器 | Qt 中的 gcc 编译器 | 独立安装 MinGW )(一)
142 0
apache tez 编译安装与验证
本文介绍apache tez 编译安装与验证
175 0
ECS7天实践进阶训练营Day1:使用阿里云ECS,快速搭建、管理VuePress静态网站
ECS7天实践进阶训练营Day1:使用阿里云ECS,快速搭建、管理VuePress静态网站
176 0
Kube Controller Manager 源码分析
Kube Controller Manager 源码分析 Controller Manager 在k8s 集群中扮演着中心管理的角色,它负责Deployment, StatefulSet, ReplicaSet 等资源的创建与管理,可以说是k8s的核心模块,下面我们以概略的形式走读一下k8s Controller Manager 代码。
2868 0
iOS开发之UIRefreshControl使用踩坑
问题描述 接上一个话题,实现了TabBar的点击刷新以后,开始继续写完成功能,刷新UITableView,于是考虑到iOS 10以后,UIScrollView已经有UIRefreshControl的属性了,干脆用自带的写。
1082 0
UWP 下拉刷新控件(PullToRefreshControl)
原文:UWP 下拉刷新控件(PullToRefreshControl) 最近项目里面有下拉刷新的需求,自己做了一个,效果还不错。 ...
1175 0
获取系统进程快照 c语言实现
[cpp] view plaincopy /************************************************************************/   /* 云守护      email:542335496@qq.com                                
1719 0
ubuntu 编译安装 apache 2.4.3
安装环境:ubuntu 桌面版12.10 安装版本:apache-2.4.3.tar.gz 使用root用户安装 su root在出现的提升中输入密码1. 1.apr 下载地址:http://apr.apache.org/download.cgi cd /usr/local/src wget http://labs.mop.com/apache-mirror//apr
1199 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载