实现下拉刷新效果 仅适用于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