iOS中UITableViewController自带的刷新控件

原创
2015/11/05 17:13
阅读数 6.3K

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

展开阅读全文
打赏
2
9 收藏
分享
加载中
显示出来了 但是刷新的跳了一下 太快咯0
2016/01/25 19:49
回复
举报
0感觉没完整 在哪里刷新 为什么我的刷新显示不出来
2016/01/25 19:36
回复
举报
学习了
2015/11/06 12:09
回复
举报
更多评论
打赏
3 评论
9 收藏
2
分享
返回顶部
顶部