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里面)


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

转载于:https://www.cnblogs.com/zsw-1993/p/4879635.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言 计算坐标,求助,有关坐标计算的

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include "stdafx.h"#include#include#include#include#define PI 3.14159265358979using namespace std;void main(){double point[100][3];char name[100][1];int i;FILE *fpfopen("D:\\作业\\大地坐标.txt"…

java面向对象封装之有参无返与有参有返

public class A{public static void main(String []args){B bnew B();b.show(99);String ab.show1(90,100);//方法show1返回字符串类型的值&&对象//90,100为参数,对象b给方法的值 System.out.println(a);}}class B{ //有参无返public void show…

终端模拟器编译c语言,编写你自己的Terminal emulator

安装开发依赖环境在apt包管理器系中,使用以下命令安装apt install libvte-2.91-dev介绍VTE是一个使用GTK构建的一个终端模拟器库, 能够处理DPI的更改。很多终端模拟器软件都基于VTE库,包括GNOME Terminal, XFCE Terminal&#xff…

转:Ubuntu下下载工具安装--uget+aria2

原文地址:http://burner1024.blog.163.com/blog/static/17447800420126191858424/ Windows下的下载工具--迅雷,之所以下载速度快,乃是它能搜索资源、为己所用,而不是仅仅从原始地址这单一资源处下载。Ubuntu下也有类似的工具&…

面向对象之编写一个完整的类

package com.work.cast;public class People {public static void main(String[] args) {People1 pnew People1();p.setName("李白");p.setAge(55);p.setSex(男);p.setHeight(183.5);//p.toString();System.out.println(p);}} class People1{//name age sex heightpr…

c语言写程序轮询是什么意思,单片机轮询按键程序

#include #define uchar unsigned char//按键端口定义sbit io_key_1 P2^0 ;sbit io_key_2 P2^1 ;sbit io_key_3 P2^2 ;sbit io_key_4 P2^3 ;sbit P30 P3^0;sbit P31 P3^1;sbit P32 P3^2;sbit P33 P3^3;//定义长按键的TICK数,以及连_发间隔的TICK数#define KEY_LONG_PER…

转:C#串口编程

本文用来简单介绍一下C#串口编程的知识,主要以实例为内容。 凡是串口设备和计算机交互的时候都用到串口,在C#中我们如何来操作串口呢? 大话串口工作原理 实际串口是用来和外部设备进行交换数据的,我抽象出下面一个图形&#xff0c…

new一个数组

public class Demo {public static void main(String[] args) {Demo1 dnew Demo1();int []arr{1,2,3,4,5};for (int i 0; i < arr.length; i) {System.out.print(arr[i]" ");}System.out.println(arr);d.shuZu(arr);//发送arr并调用shuZu。System.out.println();…

c command语言学例子,乔姆斯基语言学理论发展史研究

乔姆斯基语言学理论发展史研究论文目录内容摘要第1-4 页ABSTRACT第4-5 页中文提要第5-13 页SYNOPSIS第13-24 页Introduction第24-28 页0&#xff0e;1&#xff0e;Chomskys Achievement and Influence第24-25 页0&#xff0e;2&#xff0e; Creativity of Human Language第25-2…

oracle用户权限的管理

概述&#xff1a;创建的新用户是没有任何权限&#xff0c;甚至连登陆数据库的权限都没有。因此对于新创建的用户&#xff0c;需要为其制定 权限。用于给用户赋予权限的命令为grant&#xff0c;会搜权限的命令是revoke 1. 授予权限 a) 只有system和sys用户可以给新…

社团管理信息系统C语言,学生社团信息管理系统.doc

第一章 课题背景1.1开发背景随着校园文化的不断丰富&#xff0c;大学里各种社团越来越多&#xff0c;社团活动也越来越频繁&#xff0c;社员也越来越多&#xff0c;而且大学生退社&#xff0c;入社比较频繁&#xff0c;社团管理就显得非常繁琐而又复杂的的事情&#xff0c;如果…

JavaScript创建命名空间

引入命名空间之前&#xff0c;一个令开发人员头疼的问题就是如何防止函数名/类名和其他人的冲突&#xff0c;在一个公司内部项目组之间可以通过命名预定&#xff08;比如加前缀等&#xff09;解决这个问题&#xff0c;但是把视线放到整个软件开发领域&#xff0c;在当今协作开发…

String类的方法

public class A {public static void main(String[] args) {// TODO Auto-generated method stubStringBuilder sbnew StringBuilder();//长度可变的字符串sb//可以往字符串里添加任何字符串的方法。sb.append("haha");sb.append(s).append("jjjxxx");//链…

android c聊天功能,Android实现简单C/S聊天室应用

Android的网络应用&#xff1a;简单的C/S聊天室&#xff0c;供大家参考&#xff0c;具体内容如下服务器端&#xff1a;提供两个类创建ServerSocket监听的主类:MyServer.java负责处理每个Socket通信的线程类:ServerThread.java客户端&#xff1a;是一个Android应用程序>Multi…

ID生成策略(一)

ID生成策略&#xff1a;主键手工设定很不方便&#xff0c;在我们实际工作中在MySQL里面用自增字段auto increment&#xff0c;在oracel中一般用sequence。所以把表建成auto increment&#xff0c;对于类里面对象的对应的值就不能指定了&#xff0c;得靠程序或数据库自动生成&am…

android tabpageindicator 参数,Android实现Tab布局的4种方式(Fragment+TabPageIndicator+ViewPager)...

Android现在实现Tab类型的界面方式越来越多&#xff0c;今天就把常见的实现方式给大家来个总结。目前写了&#xff1a;1、传统的ViewPager实现2、FragmentManagerFragment实现3、ViewPagerFragmentPagerAdapter实现4、TabPageIndicatorViewPagerFragmentPagerAdapter1、传统的V…

冒泡与选择排序

public class B {public static void main(String[] args) {// 冒泡排序int[] arr{1,2,34,54,5,3};//从小到大的顺序for (int j 0; j < arr.length-1; j) {//得到4个maxfor (int i 0; i < arr.length-1; i) {//内循环得到一个maxif (arr[i]>arr[i1]) {int carr[i];a…