实现下拉刷新效果 仅适用于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
分类:
[03] IOS 进阶
标签:
IOS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构