【问题标题】:Right way to make a real time countdown timer in a UITableViewCell?在 UITableViewCell 中制作实时倒数计时器的正确方法?
【发布时间】:2015-08-12 12:29:06
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios swift uitableview tableviewcell


    【解决方案1】:

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

    但是,当您的单元格收到 - (void)prepareForReuse 消息时,不要忘记关闭计时器,否则您会遇到问题。

    【讨论】:

    • 感谢您的回答。它有很大帮助。这个 ViewController 有另一个问题。您介意检查this 问题吗?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
      1. 将 UILabel 添加到您的单元格中
      2. 获取课程时长,例如 60 分钟
      3. 启动 NSTimer 每隔一秒或一分钟调用一次,然后运行它。
      4. 从班级总时间 60:00 开始最高编号的标签。
      5. 如果计时器以秒为单位工作,每 60 次计时器被调用,获取 mins 字段 - 1(您可以将字符串转换为 2 个 NSNumber 类型的对象以便能够使用)。
      6. 并且每次最小字段得到 - 一个从 59 开始第二个字段。
      7. 每次调用计时器时都会获取第二个字段 - 一个
      8. 确保在字段达到零时标签正确完成。

      你可以每次都使用 reloadData 或 reloadCell

      希望这个答案可以帮助你好运

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-06
        • 1970-01-01
        • 1970-01-01
        • 2012-11-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多