• IOS6 新特性之UIRefreshControl


    “不会模仿的公司不是好公司不会剽窃的公司不是优秀公司 

     不会调戏代码的不是骨灰级码工

     你同意吗?

     苹果估计想取代第三方的pull to refresh”        --------------以上摘自DevDiv社区


    源代码参考了DevDiv社区的代码 地址:http://www.devdiv.com/iOS_iPhone-iOS6%E6%96%B0%E7%89%B9%E5%BE%81%EF%BC%9AUIRefreshControl_%E4%B8%8B%E6%8B%89%E5%88%B7%E6%96%B0_%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B-thread-127741-1-1.html


    如上述摘文最后一句所言,在苹果IOS6的新特性中有一个叫做UIRefreshControl的控件,顾名思义,它的用途正是 pull to refresh。

    在进入到代码层面上的解释前,需要先说一点:在IOS6中 只有UITableViewController能够使用UIRefreshControl控件,其他的viewController如果使用了,会报错。


    要使用UIRefreshControl需要有3个步骤   一、初始化以及配置   二、与UItableViewController以及相应动作的关联  三、为UIRefreshControl控件添加动作


    首先 先看初始化:(这里的self是UITableViewController 即以下代码是写在一个UITableViewController.m中的)


         self.refreshControl = [[UIRefreshControl alloc] init];//refreshControl写成了UITableViewController的属性

         self.refreshControl.tintColor = [UIColor blueColor];//将控件颜色设为蓝色

         self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];                                  

         //UIRefreshControl控件对应的文字文字当然是可以更改的从而可以显示  刷新中下拉刷新等提示语


    以上 代码便是UIRefreshControl的初始化以及两个属性的配置

        涉及到 1个初始化方法init 和两个属性tintColor(控件颜色) attributedTitle(匹配的文字)

                            这里attributedTitle要注意其类型是NSAttributedString 

                            这类字符串的特性是可以分为好几段 然后编辑成不同的字体类型(包括不同颜色)


    注意:在UITableViewController的viewdidload方法中 添加这些代码

    接下来是第二个步骤 与UItableViewController以及相应动作的关联


     在初始化完成之后 加上该语句:[self.refreshControl addTarget:self 

                                                    action:@selector(RefreshViewControlEventValueChanged)                   

                                          forControlEvents:UIControlEventValueChanged];

     addTarget:self  即完成了与UITableViewController的管理 (self即是UITableVIewController)

      action:@selector(RefreshViewControlEventValueChanged)    即完成了与相应动作的关联 (虽然动作还没写)


    最后的步骤便是添加相应动作

      

     见代码:

        -(void)RefreshViewControlEventValueChanged

    {

        if (self.refreshControl.refreshing) {

            NSLog(@"refreshing");

            self.refreshControl.attributedTitle = [[NSAttributedStringalloc]initWithString:@"刷新中"];


            [self performSelector:@selector(handleData) withObject:nil afterDelay:0.3];

        }

    }


    这里涉及到了UIRefreshControl控件的最后一个属性 refreshing  该属性为真 意味着执行了下拉操作 即你拉的够用力- -有效果。

    之后 便可以实现你需要的效果 这里时为UITableView增加一行


    PS:在以上的代码中 漏掉了2个实例方法

        beginRefreshing 和 endRefreshing 一个开始刷新 一个结束刷新(这个代码中实际上用到了 在handleData里面)


    最后 想下载源代码的同学 可以访问文章开头的地址 然后回复下载

  • 相关阅读:
    通过gridview隐藏的一列的值,来设置该行的背景颜色。
    修改js文件后,浏览器不会立即发现js文件更新,连接状态是200 (from cache)缓存
    getDate()显示格式
    设置gridview自动分页的页码不显示
    数据库字段类型,如果是bool类型,数据库中用bit
    给dropdownlist手动添加一列"请选择"(不是从数据库中读取的数据)
    数据库中使用关键词时注意
    获取服务器控件的id时,遇到使用到模板列取不到的问题
    页面自动刷新代码
    启用IIS的Gzip压缩功能
  • 原文地址:https://www.cnblogs.com/zsw-1993/p/4879635.html
Copyright © 2020-2023  润新知