iOS中UITableViewController自带的刷新控件

简介: iOS中UITableViewController自带的刷新控件

iOS中UITableViewController自带的刷新控件


一、引言


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


二、UITableViewController


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


@property (nonatomic) BOOL clearsSelectionOnViewWillAppear;


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


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


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


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


三、UIRefreshControl

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


//获取刷新状态

@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事件,我们可以在其中进行刷新的数据逻辑操作。


例如:


- (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:@"开始刷新了~~"];

}


效果如下:

image.png

目录
相关文章
|
5月前
|
iOS开发
iOS UITableViewCell刷新某些行的cell或section
iOS UITableViewCell刷新某些行的cell或section
44 0
|
5月前
|
监控 iOS开发
iOS15适配问题:viewForSupplementaryElementOfKind表头和表尾复用闪退,UITableView section header多22像素等问题
iOS15适配问题:viewForSupplementaryElementOfKind表头和表尾复用闪退,UITableView section header多22像素等问题
79 0
|
iOS开发
iOS 多个滚动控件嵌套Demo
iOS 多个滚动控件嵌套Demo
69 0
|
iOS开发
iOS 常用的 上下左右 拉刷新控件
iOS 常用的 上下左右 拉刷新控件
99 0
|
iOS开发 开发者
代码显示苹果 iOS 16.2 将允许 iPhone 更频繁刷新“实时活动”,但也更加耗电
代码显示苹果 iOS 16.2 将允许 iPhone 更频繁刷新“实时活动”,但也更加耗电
|
iOS开发
iOS短信验证码控件,自动输入回调两次解决办法
iOS短信验证码控件,自动输入回调两次解决办法
453 0
|
iOS开发 开发者
代码显示苹果 iOS 16.2 将允许 iPhone 更频繁刷新“实时活动”,但也更加耗电
10 月 26 日消息,随着本周 iOS 16.1 正式版的发布,苹果推出了实时活动 —— 更多第三方应用程序可提供有用的信息。有了“实时活动”功能,用户可以随时获知常用 App 的最新信息。无需解锁设备,即可在锁定屏幕上关注出租车的到达时间、球赛最新比分,或者下一个闹钟提醒。在 iPhone 14 Pro 上,如果解锁设备,“实时活动”信息还会出现在灵动岛。
|
iOS开发
IOS的UITableView控件简单使用
IOS的UITableView控件简单使用
154 0
|
缓存 算法 测试技术
iOS UITableView性能优化
iOS UITableView性能优化
iOS UITableView性能优化
|
iOS开发
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
147 0
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)