iOS在cell中使用倒计时的处理方法
来源:互联网 发布:informix查看端口 编辑:程序博客网 时间:2024/05/22 03:14
需求: 在UITableViewCell中每条数据中显示该内容的倒计时, 并随时间进行倒数
想法: 1.在每个cell中添加NSTimer, 负责对cell的倒数
出现的问题: cell有重用机制,每次重用时数据不好处理, 而且每个cell的倒数数不同, 需要在重用时对NSTimer进行废除并重新开启, 如果显示的cell数量过多, 需要创建很多的NSTimer对象
2. 在模型中添加NSTimer, 负责对数据进行倒计数
出现的问题: 与想法1一样, 因为cell重用, 以及数据数量导致出现一样的问题
解决方案: 创建倒计时管理类, 拥有一个时间差属性, 并且每秒对时间差进行加1的操作,并发出一个通知; 而每个cell都监听这个通知, 在通知回调中, 将服务器返回的剩余时间减去时间差再进行格式化显示即可.
好处: 全局只需要一个NSTimer对象, 没有耦合性, 不需要对NSTimer作过多的操作;
Demo地址:
GitHub - herobin22/OYCountDownManager: iOS在cell中使用倒计时的处理方法
使用方法:
1. 导入"OYCountDownManager.h"
2. 在第一次使用的地方调用[kCountDownManager start]核心代码:
- (
void
)viewDidLoad {
[super viewDidLoad];
// 启动倒计时管理
[kCountDownManager start];
}
3. 在Cell中监听通知 kCountDownNotification
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if
(self) {
// 监听通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(countDownNotification) name:kCountDownNotification object:nil];
}
return
self;
}
4. 在cell设置通知回调, 取得时间差, 根据时间差进行处理
/// 计算倒计时
NSInteger countDown = [self.model.count integerValue] - kCountDownManager.timeInterval;
if
(countDown < 0)
return
;
/// 重新赋值
self.timeLabel.text = [NSString stringWithFormat:@
"倒计时zd:zd:zd"
, countDown/3600, (countDown/60)%60, countDown%60];
5. 当刷新数据时,调用[kCountDownManager reload]
- (
void
)reloadData {
// 网络加载数据
// 调用[kCountDownManager reload]
[kCountDownManager reload];
// 刷新
[self.tableView reloadData];
}
倒计时管理类
UITableViewCell 中监听CountDown的通知, 并设置回调
- iOS在cell中使用倒计时的处理方法
- iOS 在cell中使用倒计时的处理方法(新)
- iOS关于在UITableView中,实现多个cell中不同的倒计时实现
- iOS 关于在UITableView中,实现多个cell中不同的倒计时实现
- iOS关于在UITableView中,实现多个cell中不同的倒计时实现
- ios怎么在cell上添加倒计时
- iOS 7:在一般的 ViewController 中使用static cell
- iOS每个Cell倒计时
- iOS开发中,在一般的ViewController中使用static cell
- tableview列表中的cell单元格有倒计时的情况处理
- ios中视图中Cell的属性或方法
- ios倒计时的实现方法
- 怎样在ios开发中设置tableview的cell颜色
- ios tableview didSelectRowAtIndexPath方法中,获取某个cell的实例
- IOS中自定义cell大小的两种方法
- iOS 中使用 XIB 自定义cell 的两种方法 以及 编译出现常见 的错误 ++++(xcode6.0之后)
- 如何在IOS中使用实现Android view.gone 功能(swift版)cell(两种不同的布局)
- 关于在storyboard中使用静态cell的注意事项
- CSS自动换行后缩进
- 关于C中的rand,不是线程安全的吧
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- CSDN
- android 命名规范
- iOS在cell中使用倒计时的处理方法
- html5 audio的使用
- php数组式访问借口ArrayAccess
- Ubuntu14.04 Android7.0 编译 Out of memory error
- Leetcode学习(37)—— Construct the Rectangle
- 设计模式----单例模式
- 访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决
- .net 实现MD5加密功能
- QT之在多个按钮中任选一个按钮,执行被选中的按钮功能