iOS中UITableViewController自带的刷新控件

简介:

iOS中UITableViewController自带的刷新控件

一、引言

        在iOS开发中,使用tableView的界面,大多会用到一个下拉刷新的的控件,第三方库中,我们一般会选择比较好用的MJRefresh,其实,在iOS6之后,系统为我们提供了一个原生的刷新控件,使用起来非常方便,只是制定性不强,如果我们没有复杂的需求,使用UIRefreshControl也是不错的一个选择。

二、UITableViewController

        相对于UIViewController,UITableViewController只是在内部为我们封装好了一个UITableView,并且遵守好了相关的协议,我们只需要在其中实现方法即可。UITableViewController更多的方面之处是在于下面的这个属性:

?
1
@property (nonatomic)  BOOL  clearsSelectionOnViewWillAppear;

这是一个bool值,设置为yes后每当当前controller调用ViewWillAppare的时候,都会将cell的选中状态取消,这十分有用,我们在通过点击cell跳转界面后,pop回来不需要在手动修改cell的选中状态了。

        除此之后,TableViewController中还封装了这样一个属性:

?
1
@property (nonatomic, strong, nullable) UIRefreshControl *refreshControl;

这个UIRefreshControl类是iOS6之后引入的一个简单的刷新控件,我们如果设置了它,在tableView下拉的时候,系统会提供给我们一个下拉刷新的效果。

三、UIRefreshControl

        这个类也十分简单,通过简单的设置可以展现一个小巧的刷新效果,但是制定性不强,其中主要属性如下:

?
1
2
3
4
5
6
7
8
9
10
11
//获取刷新状态
@property (nonatomic, readonly, getter=isRefreshing)  BOOL  refreshing;
//设置控件颜色
@property (null_resettable, nonatomic, strong) UIColor *tintColor;
//设置控件文字
@property (nullable, nonatomic, strong) NSAttributedString *attributedTitle UI_APPEARANCE_SELECTOR;
 
// 手动开始刷新
- ( void )beginRefreshing NS_AVAILABLE_IOS(6_0);
// 结束刷新
- ( void )endRefreshing NS_AVAILABLE_IOS(6_0);

需要注意的是,UIRefreshControl是继承于UIControl的,下拉唤醒刷新状态后,会触发UIControleEventValueChange事件,我们可以在其中进行刷新的数据逻辑操作。

例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
- ( void )viewDidLoad {
     [super viewDidLoad];
     self.refreshControl = [[UIRefreshControl alloc]init];
     self.refreshControl.tintColor = [UIColor greenColor];
     self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@ "下拉刷新了~~" ];
     self.clearsSelectionOnViewWillAppear = YES;
     self.navigationItem.rightBarButtonItem = self.editButtonItem;
     [self.refreshControl addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];
}
 
-( void )change:(UIRefreshControl*)con{
     self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@ "开始刷新了~~" ];
}

效果如下:

目录
相关文章
|
缓存 iOS开发
iOS小技能:解决TableVIew刷新数据带来的界面跳动问题
iOS小技能:解决TableVIew刷新数据带来的界面跳动问题
2326 0
iOS小技能:解决TableVIew刷新数据带来的界面跳动问题
|
iOS开发
iOS UITableViewCell刷新某些行的cell或section
iOS UITableViewCell刷新某些行的cell或section
323 0
|
iOS开发
iOS 多个滚动控件嵌套Demo
iOS 多个滚动控件嵌套Demo
276 0
|
iOS开发
iOS 常用的 上下左右 拉刷新控件
iOS 常用的 上下左右 拉刷新控件
307 0
|
iOS开发
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
318 0
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
|
安全 iOS开发
iOS小技能:下拉刷新控件的适配
1. 下拉顶部背景色设置: 往tableView的父控件添加拉伸背景视图 2. present 半屏适配 iOS13 modalPresentationStyle属性默认不是全屏样式`UIModalPresentationFullScreen`,而是半屏样式,需要根据需求手动设置。 present 半屏,会导致列表下拉刷新失效。
567 0
iOS小技能:下拉刷新控件的适配
|
iOS开发
iOS小技能:自动布局实现兄弟控件N等分且宽高比例是1:N(xib 上实现)
本文为 iOS视图约束专题的第三篇:xib上使用自动布局教程
503 0
|
存储 前端开发 程序员
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
在iOS开发中会遇到一些选择选项的需求,而且点击一个控件弹出一个选择框,选择之后展示到前端,然后再把选择的内容传给后台或者做本地存储。这个需求对于大多数开发者来说可以为小儿科,但是作为一个爱记录的程序猿来说相当可贵,所以还是那句话,只分享给有缘人,大牛可以飘过,不喜勿喷请走开。
626 0
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
|
数据可视化 程序员 iOS开发
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法
在iOS开发过程中,尤其是iOS开发初期,会遇到各种各样的错误,有些错误是开发者的不熟悉或者疏忽大意造成的,还有些是无厘头的错误,可以通过重启Xcode或者重启电脑就可解决。
639 0
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法
|
iOS开发 开发者
代码显示苹果 iOS 16.2 将允许 iPhone 更频繁刷新“实时活动”,但也更加耗电
代码显示苹果 iOS 16.2 将允许 iPhone 更频繁刷新“实时活动”,但也更加耗电

热门文章

最新文章