在 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
消息时,请不要忘记关闭计时器,否则您会 运行 出问题。
- 将 UILabel 添加到您的单元格
- 获取 class 有多长,例如 60 分钟
- 启动 NSTimer 每隔一秒或每分钟调用一次,运行 它。
- 开始标签总次数最多class60:00.
- 如果计时器以秒为单位工作,每 60 次计时器被调用一次,则将 mins 字段减一(您可以将字符串转换为 NSNumber 类型的 2 个对象以便能够使用)。
- 每次最小字段得到 - 一个从 59 开始第二个字段。
- 每次调用计时器时获取第二个字段 - 一个
- 确保您有条件,当字段达到零时标签正确完成。
你可以每次都使用reloadData或者reloadCell
希望这个回答能帮到你好运
我正在尝试开发一个时间表应用程序。我有 TableViewController,它显示当天的 classes。如何使用倒数计时器实现显示当前 class 的单元格?
我尝试使用每秒调用 tableView.reloadData() 的 NSTimer,但我认为这不是一个好方法,而且我有一个连续的 2-3% CPU 使用率。
This 屏幕截图显示了我的想象。 (生物class应该有计时器,第三格)
我认为创建计时器的最佳方法是:
- 当计时器启动时,计算它完成的时间。例如。计时器应该 运行 一个小时,现在是 8:28,所以它会在 9:28 完成。节省完成时间
- 每次更新显示时,计算现在与保存时间之间的剩余时间,并用它更新标签。像这样你可以同时更新每个标签
不要重新加载整个 table。计时器和控件的更新应该发生在 table 视图单元子类中,而不是在包含的控制器中。
不过,当您的手机收到 - (void)prepareForReuse
消息时,请不要忘记关闭计时器,否则您会 运行 出问题。
- 将 UILabel 添加到您的单元格
- 获取 class 有多长,例如 60 分钟
- 启动 NSTimer 每隔一秒或每分钟调用一次,运行 它。
- 开始标签总次数最多class60:00.
- 如果计时器以秒为单位工作,每 60 次计时器被调用一次,则将 mins 字段减一(您可以将字符串转换为 NSNumber 类型的 2 个对象以便能够使用)。
- 每次最小字段得到 - 一个从 59 开始第二个字段。
- 每次调用计时器时获取第二个字段 - 一个
- 确保您有条件,当字段达到零时标签正确完成。
你可以每次都使用reloadData或者reloadCell
希望这个回答能帮到你好运