将秒转换为分钟:MacOS 标签中的秒
Posted
技术标签:
【中文标题】将秒转换为分钟:MacOS 标签中的秒【英文标题】:Convert seconds to Minutes:Seconds in label MacOS 【发布时间】:2018-07-06 21:33:27 【问题描述】:我是一名学校老师,我们被“命令”在我们的课程中使用特定的计时器,这在我们的 Apple iMac 上不起作用。我正在尝试在 xcode 中创建自己的,到目前为止已经创建了一个基本窗口,它将在几秒钟内倒计时一个标签。我现在已经分配了按钮并且它们可以工作(以 60 秒为增量)。
这很好用,但理想情况下我希望标签显示分钟和秒(对孩子们来说更容易)。编写此代码的最佳方法是什么?我上次使用 xcode 是在 2009 年,现在我已经过时了!!提前致谢
--
@objc func updateTimer()
seconds -= 1 //This will decrement(count down)the seconds.
countdownLabel.stringValue = "\(seconds)" //This will update the label.
--
@objc func runTimer()
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector:(#selector(ViewController.updateTimer)), userInfo: nil, repeats: true)
--
@IBAction func threeMin(_ sender: Any)
seconds = 180
runTimer()
--
【问题讨论】:
您好,欢迎来到本站。如果您添加主要语言标签,更多人会看到您的问题。 (这是 Swift 吗?如果是,只需 edit the question 和例如在底部的标签框中添加swift
标签。)
欢迎来到 Stack Overflow!请添加图像而不是图像而不是链接。这次我为您完成了这项工作 - 请参阅 the editing help 了解有关格式化的更多信息。
感谢您的帮助和建议,我尝试了该图像,但由于声誉点,它允许我使用。感谢整理
【参考方案1】:
有很多解决方案。一个方便的是DateComponentsFormatter
let formatter : DateComponentsFormatter =
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.minute, .second]
return formatter
()
@objc func updateTimer()
seconds -= 1
countdownLabel.stringValue = formatter.string(from: TimeInterval(seconds))!
一些改进:
为所有按钮分配标签,其值以秒为单位,例如将 threeMin
按钮的标签设置为 180。然后仅使用 一个 IBAction
并将所有按钮连接到该操作。
在动作中首先检查计时器是否正在运行,只有在它没有运行时才启动它
var timer : Timer?
@IBAction func startTimer(_ sender: NSButton)
if timer == nil
seconds = sender.tag
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.updateTimer), userInfo: nil, repeats: true)
创建一个函数来可靠地停止计时器
func stopTimer()
if timer != nil
timer?.invalidate()
timer = nil
如果seconds
为0,则在updateTimer()
函数中停止计时器
@objc func updateTimer()
seconds -= 1
countdownLabel.stringValue = formatter.string(from: TimeInterval(seconds))!
if seconds == 0 stopTimer()
【讨论】:
以上是关于将秒转换为分钟:MacOS 标签中的秒的主要内容,如果未能解决你的问题,请参考以下文章