您的位置:首页 > 产品设计 > UI/UE

iOS6新特征:UIRefreshControl[下拉刷新]使用示例

2014-05-04 20:44 573 查看
原文出处:http://www.devdiv.com/iOS_iPhone-iOS6%E6%96%B0%E7%89%B9%E5%BE%81%EF%BC%9AUIRefreshControl_%E4%B8%8B%E6%8B%89%E5%88%B7%E6%96%B0_%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B-thread-127741-1-1.html

注:这里是iOS6新特征汇总贴链接iOS6新特征:参考资料和示例汇总

小弟不才,今天研究了一下iOS6中的一个新控件UIRefreshControl,下面与大家分享一下。

不会模仿的公司不是好公司不会剽窃的公司不是优秀公司

不会调戏代码的不是骨灰级码工

你同意吗?

苹果估计想取代第三方的pulltorefresh】

下面是效果图,这里是代码示例

DevDiv_UIRefreshControl.zip(144.42
KB,下载次数:1042,售价:1资源分)



下面大致介绍一下UIRefreshControl的使用

1、使用范围

如果你装了xcode_4.5_developer_preview,那么在UITableViewController.h文件中你会看到,UITableViewController里面有如下声明,说明UITableViewController已经内置了UIRefreshControl控件

1
@property
(nonatomic,retain)UIRefreshControl*refreshControlNS_AVAILABLE_IOS(6_0);
【注】:UIRefreshControl目前只能用于UITableViewController,如果用在其他ViewController中,运行时会得到如下错误提示:(即UIRefreshControl只能被UITableViewController管理)

1
2012-06-15
14:34:34.908DevDivUIRefreshControl[722:10103]***Terminatingappduetouncaughtexception
'NSInternalInconsistencyException'
,
reason:
'UIRefreshControl
mayonlybemanagedbyaUITableViewController'
2
***
First
throw
call
stack:
3
(0x186fd72
0x1066e510x186fb4b0x55a5590x572380x5d4820x55ad20x2ebb0xeb2a30xeb30e0x10b7e90x10b6240x109aef0x10999c0x107adc0x1082c60xecf240xed1e00xee0840x5645c0x5cf310x55ad20x4131d0x414f60x4168c0x498710x10a900x1196a0x222be0x22f9f0x153fd0x17ccf39
0x17ccc100x17e5da50x17e5b120x1816b460x1815ed40x1815dab0x1128f0x12e710x29fd0x2925)
4
libc++abi.dylib:
terminatecalledthrowinganexception
5
(lldb)
2、如何使用

a)初始化

如何在UITableViewController中使用UIRefreshControl呢,在上面给出的代码附件中,你可以很详细的知道,这里介绍一下关键的部分:

1
self.refreshControl
=[[UIRefreshControlalloc]init];
2
//
self.refreshControl.tintColor=[UIColorblueColor];
3
self.refreshControl.attributedTitle
=[[NSAttributedStringalloc]initWithString:@
"下拉刷新"
];
4
[self.refreshControl
addTarget:selfaction:@selector(RefreshViewControlEventValueChanged)forControlEvents:UIControlEventValueChanged];
如上面看到的代码,虽然UITableViewController已经声明了UIRefreshControl,但是貌似还没有初始化,所以需要我们自己初始化。很神奇,初始化的时候并不需要给它指定frame,UITableViewController会为我们进行管理。遗憾的时目前只看到下拉刷新功能,上拉刷新还没有,估计在最终版里面苹果会考虑加入上拉刷新功能。

我们还可以给UIRefreshControl设置tintColor和attributedTitle。

b)下拉刷新事件监听

当用户进行下拉刷新操作时,UIRefreshControl会触发一个UIControlEventValueChanged事件,通过监听这个事件,我们就可以进行类似数据请求的操作了。如下代码:

1
[self.refreshControl
addTarget:selfaction:@selector(RefreshViewControlEventValueChanged)
c)进行数据请求

在示例中,为了演示数据请求,我简单的做了一个延时处理,2秒钟后,调用handleData

1
[self
performSelector:@selector(handleData)withObject:nilafterDelay:2];
在handleData里面,就表示已经请求到了数据,在此进行UI更新即可。也需要注意的是,我们调用UIRefreshControl的endRefreshing方法,表示刷新结束,让UIRefreshControl更新显示。

1
-
(
void
)
handleData
2
{
3
NSLog(@
"refreshed"
);
4
[self.refreshControl
endRefreshing];
5
self.refreshControl.attributedTitle
=[[NSAttributedStringalloc]initWithString:@
"下拉刷新"
];
6
7
self.count++;
8
[self.tableView
reloadData];
9
}
3、官方头文件

下面是sdk中UIRefreshControl的声明,想必看了下面的代码,你已经知道如何使用了。

view
source

print?

01
//
02
//UIRefreshControl.h
03
//UIKit
04
//
05
//Copyright
2012AppleInc.Allrightsreserved.
06
//
07
08
#import
<Foundation/Foundation.h>
09
#import
<UIKit/UIControl.h>
10
#import
<UIKit/UIKitDefines.h>
11
12
NS_CLASS_AVAILABLE_IOS(6_0)
@interfaceUIRefreshControl:UIControl
13
14
/*
Thedesignatedinitializer
15
*
ThisinitializesaUIRefreshControlwithadefaultheightandwidth.
16
*
OnceassignedtoaUITableViewController,theframeofthecontrolismanagedautomatically.
17
*
Whenauserhaspulled-to-refresh,theUIRefreshControlfiresitsUIControlEventValueChangedevent.
18
*/
19
-
(id)init;
20
21
@property
(nonatomic,readonly,getter=isRefreshing)
BOOL
refreshing;
22
23
@property
(nonatomic,retain)UIColor*tintColorUI_APPEARANCE_SELECTOR;
24
@property
(nonatomic,retain)NSAttributedString*attributedTitleUI_APPEARANCE_SELECTOR;
25
26
//
MaybeusedtoindicatetotherefreshControlthatanexternaleventhasinitiatedtherefreshaction
27
-
(
void
)beginRefreshing
NS_AVAILABLE_IOS(6_0);
28
//
Mustbeexplicitlycalledwhentherefreshinghascompleted
29
-
(
void
)endRefreshing
NS_AVAILABLE_IOS(6_0);
30
31
@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UITableViewControlle