产品需求写一个tableView每一个cell的倒计时功能,求设计思路

clipboard.png

产品的需求是:

  1. 实现倒计时

  2. 倒计时结束后开奖,获取开奖结果(界面随之改变)。

  3. 每过一段时间就获取新的开奖数据加入到表格中,表格的数据源实时刷新。


我已经基本实现了功能。但是我的设计思路总是很欠缺的,代码的健壮性是不够的。对一些控件了解的不够深入。


我的思路

怎么实现?

  • 首先得找个东西来实现倒计时

    1. 第一种。-------我们都知道定时器NSTimer。(但是大神们都说NSTimer计算的时间并不精确)

    2. 第二种。-------系统时间。当前系统时间总不会错吧。。。(我也不知道准不准,求解答。ps:我都怀疑这个世界了。。。)

如果有还有什么实现倒计时的请告知!

先了解一下大致的环境

后台返回的数据中有产品开奖的倒计时时间(ps:以秒为单位),希望数据在路上少飞一下,以免有误差。这也是为什么界面混乱的原因之一!
导致了我的demo长时间放置后,出现了上面一块在倒计时,中间有几个cell没倒计时,下面在倒计时),PS:如果是后台坑了我就呵呵了,反正他们说数据排过序
真机上我做过处理只要进入后台页面就dealloc,所以这种问题基本看不到。

找到了东西就开始干活

第一种解决方案

  1. 获得后台返回的数据,已开奖、未开奖的以两种模型解析。以便后续显示。

  2. 用数组模型储存下模型数据,拿到未开奖的模型数据的个数(ps.当然个数不多永远就那么几个),就每隔一毫秒遍历数据啦,每个model的倒计时减一。

  3. 刷新掉可见的cell的倒计时

第二种解决方案

获取时间处理

获取倒计时时间+系统时间---->存储到模型

cell复用池取出来

  • 模型时间 > 当前时间

    • 创建计时器开始倒计时

      • 让每个cell里持有一个NSTime,跑起来(复用内存ok)

      • 模型时间 - 当前时间 = 到计时初始时间;

    • 倒计时结束获取开奖结果 替换模型数据

  • 模型时间 < 当前时间

    • 获取开奖结果 替换模型数据 ???那么问题来了如果一次获得的开奖模型数大于页面能显示的那么不被显示的模型,一旦从复用池取出来都是正在开奖,明显不合逻辑。
      那么还是得给他整体加个定时器了,每隔一秒钟遍历未开奖数据


希望大牛们能给我一些思路或者demo完善我的代码,感激不尽!采纳答案的发红包哦

阅读 5.2k
3 个回答
新手上路,请多包涵

Runloop

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题