UIRefreshControl声明自UIRefreshControl.h,直接继承自UIControl ,适应与iOS6及以后版本
概述:
UIRefreshControl对象提供了一个标准的控制,可用于启动的表视图中的内容令人耳目一新。您可以通过相关的表视图控制器对象刷新控制链接到一个表中。表视图控制器处理添加控制表中的视觉外观和管理响应于相应的用户手势控制的显示器的工作。
注解:由于刷新控制是在tableview中使用的,是由表视图控制器管理专门管理,在不同的情况下使用它会导致不确定的行为
除了分配刷新控制到表格视图控制器的refreshControl属性,必须配置控制器自身的目标和行动。该控件不直接启动刷新操作。相反,当刷新事件出现的时候会发送UIControlEventValueChanged事件。您必须为这个事件指定一个操作方法,并用它来执行任何所需的操作。
UITableViewController对象拥有刷新控制的功能,同时也负责制定该控件的边框矩形。因此,你不需要直接在视图层次管理刷新控件的大小和位置。
开始:
初始化刷新控制器
– init 初始化并返回一个标准的刷新控制器
- (id)init
返回一个配置了一个默认高度和宽度的刷新控制器。在分配控制器到的UITableViewController对象中之后,控制的结构会自动的调整以匹配它。
访问控制属性
tintColor 刷新控制器的颜色
@property (nonatomic, retain) UIColor *tintColor 默认值为nil
attributedTitle 所展示的控制器的类型名称
@property (nonatomic, retain) NSAttributedString *attributedTitle 默认值为nil
管理刷新状态:
– beginRefreshing 告诉控制器刷新操作已经开始系统的工作
- (void)beginRefreshing
当外部事件源有计划的触发你table刷新的时候调用此方法。例如,如果你使用的NSTimer对象定期刷新表视图中的内容,你会调用此方法作为你时间处理函数的一部分。此方法将更新刷新控制的状态,以反映在正在进行刷新操作。当刷新操作结束时,一定要调用endRefreshing方法返回控制到默认状态。
– endRefreshing 告诉控制器刷新操作已经结束
- (void)endRefreshing
在任何刷新操作结束时(无论是程序上的结果或用户手动结束)调用此方法,以便使得刷新控制器恢复到默认状态。如果刷新控制器至少有部分是可见的,则调用此方法还隐藏它。如果动画是激活的,则用正在使用的动画隐藏控制器
refreshing 一个布尔值,标志刷新操作是否已被触发并正在进行
@property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing 实例代码:
1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 5 myTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 568-64) style:UITableViewStylePlain]; 6 myTableView.delegate = self; 7 myTableView.dataSource = self; 8 [self.view addSubview:myTableView]; 9 10 dataArray = [[NSMutableArray alloc] initWithObjects:@"火影", @"海贼", @"死神", @"银魂", @"妖尾", nil]; 11 12 refreshControl = [[UIRefreshControl alloc] init]; 13 refreshControl.tintColor = [UIColor orangeColor]; 14 [refreshControl addTarget:self action:@selector(refreshView:) forControlEvents:UIControlEventValueChanged]; 15 [refreshControl setAttributedTitle:[[NSAttributedString alloc] initWithString:@"松手更新数据"]]; 16 17 [myTableView addSubview:refreshControl]; 18 19 } 20 21 - (void)refreshView:(UIRefreshControl *)control 22 { 23 [refreshControl beginRefreshing]; 24 timer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(timerAction:) userInfo:nil repeats:NO]; 25 } 26 27 - (void)timerAction:(NSTimer *)ti 28 { 29 [refreshControl endRefreshing]; 30 } 31 32 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 33 { 34 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ID"]; 35 if (cell == nil) { 36 cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ID"]; 37 } 38 cell.textLabel.text = [dataArray objectAtIndex:indexPath.row]; 39 return cell; 40 } 41 42 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 43 { 44 return dataArray.count; 45 }