UIRefreshControl自动刷新
不知道UIRefreshController是什么的朋友可以参考iOS6新特征:UIRefreshControl[下拉刷新]使用示例 一文了解这是什么,这里只提怎么使用代码的方式触发UIRefreshControl显示spinner动画,并发起正常情况下下拉之后进行的流程。
项目中需要在界面显示出来的时候进行自动拉取数据并刷新界面,要用一个UIRefreshControl显示其过程。
界面VC是一个UIViewController,tableview被添加到其中,UIRefreshControl在viewDidLoad的时候被添加到tableview中。
以下是相关代码:
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- [self setBackgroudImage];
- self.view.backgroundColor = [UIColor whiteColor];
- self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 64.f, self.view.frame.size.width, self.view.frame.size.height - 64.f)
- style:UITableViewStylePlain];
- self.tableView.delegate = self;
- self.tableView.dataSource = self;
- self.tableView.backgroundColor = [UIColor clearColor];
- self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
- [self.view addSubview:self.tableView];
- self.refreshControl = [[UIRefreshControl alloc] init];
- self.refreshControl.tintColor = [UIColor whitecolor];
- [self.refreshControl addTarget:self
- action:@selector(handleRefresh:)
- forControlEvents:UIControlEventValueChanged];
- [self.tableView addSubview:self.refreshControl];
- }
handleRefresh: 为正常情况下下拉tableview会触发的UIRefreshControl的操作,
- - (void) handleRefresh:(id)sender{
- //TODO: do something here
- }
我们要做的是在viewDidAppear的时候完成tableview下拉,并且UIRefreshControl显示spinner表示正在refreshing。参考过以下两个帖子
http://stackoverflow.com/questions/16687253/uirefreshcontrol-auto-start
http://stackoverflow.com/questions/14718850/uirefreshcontrol-beginrefreshing-not-working-when-uitableviewcontroller-is-ins
但很遗憾,没有一个能做到这个,以下是我的解决方案:
- - (void)viewDidAppear:(BOOL)animated
- {
- [super viewDidAppear:animated];
- if (self.refreshControl.refreshing) {
- //TODO: 已经在刷新数据了
- } else {
- if (self.tableView.contentOffset.y == 0) {
- [UIView animateWithDuration:0.25
- delay:0
- options:UIViewAnimationOptionBeginFromCurrentState
- animations:^(void){
- self.tableView.contentOffset = CGPointMake(0, -self.refreshControl.frame.size.height);
- } completion:^(BOOL finished){
- [self.refreshControl beginRefreshing];
- [self.refreshControl sendActionsForControlEvents:UIControlEventValueChanged];
- }];
- }
- }
- }
关键点:[self.refreshControl beginRefreshing]要在完成对tableview contentoffset的设置之后调用,另外要触发handleRefresh需要向UIRefreshControl主动发送一个UIControlEventValueChanged事件
如果你遇到任何问题,可以在这里留下问题,我有时间会来回答。谢谢!
UIRefreshControl自动刷新的更多相关文章
- 浏览器自动刷新——基于Nodejs的Gulp LiveReload与VisualStudio完美结合。
本文版权桂博客园和作者吴双共同所有,转载和爬虫请注明原文地址 http://www.cnblogs.com/tdws/p/6016055.html 写在前面 大家好我是博客园的蜗牛,博客园的蜗牛就是我 ...
- Sublime3和Chrome配置自动刷新网页【实测可用】
SublimeText2下的LiveReload在SublimeText3下无法正常使用,本文整理SublimeText3安装LiveReload的方法.win7下实测可用! 安装成功后,就不需要再手 ...
- gulp之压缩合并MD5清空替换加前缀以及自动编译自动刷新浏览器大全
gulp是基于流的前端构件化工具.目前比较火的前端构建化工具还是挺多的,grunt gulp fis3等等. 这个鬼东西有什么用?请参考https://www.zhihu.com/question/3 ...
- 更为简单的Ctrl+S自动刷新浏览器工具-LinrF5
一款自动刷新浏览器的小工具,它通过监听用户的按键,如果在键盘按下 Ctrl+S ,则自动刷新浏览器,操作十分简单,前端开发必备神器,快速提升工作效率,支持IE.火狐以及最新版的chrome33.之前我 ...
- SQL实现类似于自动刷新数据的功能
有时需要在SQL中,定时刷新某张表,比如说是要定时查询某张表的行数,通常做法就是手动的按F5去执行来刷新数据.但是如果这个定时查询历时较长,10分钟,或半小时,手动的话肯定是要崩溃了.貌似SQL没有像 ...
- Javascript实现页面加载完成后自动刷新一遍清除缓存文件
我们有些时候在加载页面时,会出现缓存文件对当前文件的表现效果有干扰,如有些缓存的样式文件会是页面效果发生改变,这时我们希望页面在加载时能自动刷新一遍清楚缓存文件. 但是由于跳转页面肯定会用到BOM部分 ...
- Notepad++自动刷新文本
现在的日志信息往往都是打印在硬盘上,而不是保存到线上,所以我们常常会使用notepad++来查看硬盘上的文本文件 这时往往会出现两个问题 (1)在notepad++长时间最小化后,再次打开会提示是否下 ...
- 简单配置webpack自动刷新浏览器
文档地址 http://webpack.github.io/docs/usage.html 首先全局安装webpack(我这里使用的是淘宝的cnpm) cnpm install webpack 检查 ...
- gruntJs篇之connect+watch自动刷新
grunt很强大,可以帮我我们解决很多繁琐的操作,虽然刚接触不久,但依然感受到其强大之处,这篇记录一下通过grunt.js实现事实刷新页面, 省去了编码 -> 保存 -> F5..F5.. ...
随机推荐
- T-SQL 的简单查询语句
通配符: “_”: 代表匹配一个字符 “%”: 代表匹配多个字符: []:表示范围,可以包含多个数据 [^] 表示取反 “-“ 表示范围 逻辑与 and 逻辑或 or 逻辑非 not 聚会函数 : ...
- 将数组里的元素拼接成sql里的in条件
/** * 将数组里的元素拼接成sql里的in条件,如'a1','a2','a3' * @param array * @returns */function makeSqlInStr(array){ ...
- js中==, !==, === ,!=的区别
在讨论比较符的时候我们先要来讨论哈js的类型,这样有助于我们从本质上了解原理. 下面是我找的资料加上个人的总结: js中有5种数据类型:Undefined.Null.Boolean.Number和St ...
- Unity AngryBots愤怒的机器人demo研究
做为Unity早期的经典demo,一直从3.5以后沿用到4.7.x版本.但其内部一些做法十分不合理.比如使用过多的根目录, 创建怪物和玩家不用SpawnPoint.AI.CheckPoint的代码实现 ...
- 再谈Bellman-Ford
这几天学校女生节,挺累的,感觉还是挺好玩的,前几天看了一下最短路,Bellman-fort算法果然比较厉害,今天又参考了刘汝佳的两本书,有了一点新的认识. 废话不说,先上代码: #include &l ...
- 为PetaPoco添加实体模板
Brad为我们提供了T4模板,因为公司一直在使用CodeSmith,故为其写了一个CodeSmith的模板,代码如下: <%-- Name:EntityTemplates Author: Des ...
- laravel框架总结(六) -- 门面(facades)
Facades 为应用程序的服务容器中可用的类提供了一个「静态」接口. Laravel 本身附带许多的 facades,甚至你可能在不知情的状况下已经在使用他们! xpower的静态接口(门面 ...
- 怎么简单获取input file 选中的图片,并在一个div的img里面赋值src实现预览?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs ...
- 嵌入资源的方式让Winform使用系统没有的字体,无需安装字体
原文: How to embed a True Type font http://bobpowell.net/embedfonts.aspx 测试项目下载: http://files.cnblogs. ...
- didFinishLaunchingWithOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...