实现下拉刷新效果 仅适用于IOS 6.0

iOS6.0中的一个新控件UIRefreshControl

照例上图

 

 

今天逛论坛看到别人发的帖子,说此控件只能用于UITableViewController,如果用在其他ViewController中,运行时会得到如下错误提示:(即UIRefreshControl只能被UITableViewController管理)

其实他忽略了一点,在ViewController上可以调用

- (void)addSubview:(UIView *)view;

来进行添加UITableViewController,再添加UITableView,这样UIRefreshControl依旧由UITableViewController管理,但在其他ViewController中依旧可以使用。为了使用原生的下拉效果,你说我们容易吗!

例子结构:

VC_view 继承于 UIViewController

TV_table 继承于 UITableViewController

VC_view 重点代码

#pragma mark -
#pragma mark Custom Methods
/******************************************************************************
 函数名称 : - (void)refreshData
 函数描述 : 刷新视图数据
 输入参数 : N/A
 输出参数 : N/A
 返回参数 : N/A
 备注信息 :
 ******************************************************************************/
- (void)refreshData{
    self.pTV_table = [[TV_table alloc] initWithNibName:@"TV_table" bundle:nil];
    self.pTV_table.view.frame = CGRectMake(0, 0, 320, 416);
    [_pV_main addSubview:_pTV_table.tableView];
}

在UIViewController 添加别的Controller Or View 必须声明全局变量

//引入UITableViewController,必须在需引入的控制器中声明其全局变量,不能声明为局部变量。
@property (strong, nonatomic) TV_table *pTV_table;

这是ARC的特点

TV_table 重点代码

/******************************************************************************
 函数名称 : - (void)configRefreshControl
 函数描述 : 配置RefreshControl
 输入参数 : N/A
 输出参数 : N/A
 返回参数 : N/A
 备注信息 :
 ******************************************************************************/
- (void)configRefreshControl{
    UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
    refresh.tintColor = [UIColor lightGrayColor];
    refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];
    [refresh addTarget:self action:@selector(refreshView)
      forControlEvents:UIControlEventValueChanged];
    self.refreshControl = refresh;
}

 

/******************************************************************************
 函数名称 : - (void)handleData
 函数描述 : 处理数据
 输入参数 : N/A
 输出参数 : N/A
 返回参数 : N/A
 备注信息 :
 ******************************************************************************/
-(void)handleData
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
    NSString *lastUpdated = [NSString stringWithFormat:@"最后更新于 %@",
                             [formatter stringFromDate:[NSDate date]]];
    self.refreshControl.attributedTitle = [[NSAttributedString alloc]
                                           initWithString:lastUpdated];
    self.count++;
    [_pMuArr_dataSource insertObject:[NSString stringWithFormat:@"%d. %@,簡簡單單WZP感觉",
                                      _count,
                                      [formatter stringFromDate:[NSDate date]]] atIndex:0];
    
    [self.refreshControl endRefreshing];
    [self.tableView reloadData];
}

 

/******************************************************************************
 函数名称 : - (void)refreshView
 函数描述 : 刷新视图
 输入参数 : N/A
 输出参数 : N/A
 返回参数 : N/A
 备注信息 :
 ******************************************************************************/
-(void)refreshView
{
    if (self.refreshControl.refreshing) {
        self.refreshControl.attributedTitle = [[NSAttributedString alloc]
                                               initWithString:@"加载数据..."];
        [self performSelector:@selector(handleData) withObject:nil afterDelay:2];
    }
}

 

PRJ_pullDownRefresh6.0.zip 下载地址:http://ishare.iask.sina.com.cn/f/34851880.html

posted @ 2012-11-28 18:14  wangzhipeng  阅读(1679)  评论(0编辑  收藏  举报