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

效果如下:

专注技术,热爱生活,交流技术,也做朋友。 ——珲少 QQ群:203317592

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏hightopo

HTML5 网络拓扑图性能优化

1825
来自专栏kwcode

asp.net动态解析用户控件(UserControl)

模块化的时候需要用到: #region asp.net解析用户控件 /// <summary> /// asp....

36810
来自专栏WindCoder

Android学习笔记-控件初体验

python为自己自学的,现仍处于初级阶段,这学期开启的是javaEE和Android开发,所以今后可能会同时出现这些方面的总结内容。

751
来自专栏小蠢驴iOS专题

MNKit - 业务开发中简化属性设置的工具类

2278
来自专栏菩提树下的杨过

silverlight数据绑定模式TwoWay,OneWay,OneTime的研究

asp.net开发中,数据绑定是一个很简单的概念,控件与数据绑定后,控件可以自动把数据按一定的形式显示出来。(当然控件上的值改变后,可以通过提交页面表单,同时后...

2086
来自专栏九彩拼盘的叨叨叨

Web 前端常用专有名词的正确拼写

本文遵守创作共享CC BY-NC-SA 4.0协议 网络平台如需转载必须与本人联系确认。

1242
来自专栏hrscy

iOS常见问题总结(二)

在导入框架libxml2.2.dylib后, 最到了XCode仍然找不到<libxml/tree.h>的情况, 最后解决过程如下: 1 )项目 -Targ...

1022
来自专栏游戏杂谈

AS3给图片加水印文字

通过FileReference获取选中的图片,调用它的load方法,将图片存入到内存中。使用Loader(flash.display.Loader)类的loa...

932
来自专栏拂晓风起

HTML5动画软件工具编辑器 HTML5动画分类 工具推荐

1523
来自专栏一“技”之长

iOS在应用中添加自定义字体 原

2、注意Build Phases中的Copy Bundle Resources中是否导入了文件:

612

扫码关注云+社区