在 UITableViewCell 中制作实时倒数计时器的正确方法?

Right way to make a real time countdown timer in a UITableViewCell?

我正在尝试开发一个时间表应用程序。我有 TableViewController,它显示当天的 classes。如何使用倒数计时器实现显示当前 class 的单元格?

我尝试使用每秒调用 tableView.reloadData() 的 NSTimer,但我认为这不是一个好方法,而且我有一个连续的 2-3% CPU 使用率。

This 屏幕截图显示了我的想象。 (生物class应该有计时器,第三格)

我认为创建计时器的最佳方法是:

  • 当计时器启动时,计算它完成的时间。例如。计时器应该 运行 一个小时,现在是 8:28,所以它会在 9:28 完成。节省完成时间
  • 每次更新显示时,计算现在与保存时间之间的剩余时间,并用它更新标签。像这样你可以同时更新每个标签

不要重新加载整个 table。计时器和控件的更新应该发生在 table 视图单元子类中,而不是在包含的控制器中。

不过,当您的手机收到 - (void)prepareForReuse 消息时,请不要忘记关闭计时器,否则您会 运行 出问题。

  1. 将 UILabel 添加到您的单元格
  2. 获取 class 有多长,例如 60 分钟
  3. 启动 NSTimer 每隔一秒或每分钟调用一次,运行 它。
  4. 开始标签总次数最多class60:00.
  5. 如果计时器以秒为单位工作,每 60 次计时器被调用一次,则将 mins 字段减一(您可以将字符串转换为 NSNumber 类型的 2 个对象以便能够使用)。
  6. 每次最小字段得到 - 一个从 59 开始第二个字段。
  7. 每次调用计时器时获取第二个字段 - 一个
  8. 确保您有条件,当字段达到零时标签正确完成。

你可以每次都使用reloadData或者reloadCell

希望这个回答能帮到你好运