gpt4 book ai didi

ios - 如何让我的 Swift 类实时更新 View Controller 中的标签?

转载 作者:行者123 更新时间:2023-11-30 13:31:45 25 4
gpt4 key购买 nike

我正在使用 Swift 2+ 并制作秒表/计时器。

基本上,我有一个类 StopWatch2,我可以从 ViewController 调用它。

我可以让类中的计时器启动、运行、停止和重置。

我还可以让它更新 ViewController 中的标签,但仅限于“现在”。例如,如果我启动计时器,标签将显示 7:59。我可以在打印日志中看到计时器正在倒计时,但它没有更新标签。如果我单击“停止”,标签将根据当前时间进行更新。

所有代码都在这里 - https://github.com/markie1313/Debate-Timer 。如果我需要发布代码示例,我很乐意这样做。

要做什么?

标记

更新:

抱歉耽搁了。这是我用于 ViewController 的代码

类 ViewController2AC: UIViewController { var newTimer = StopWatch2()

@IBOutlet var timerText: UILabel!
@IBOutlet var startStopButton: UIButton!

@IBAction func startStopTimer(sender: AnyObject) {
timerText.text = "8:00"
newTimer.startStop()
timerText.text = newTimer.stopWatchString

}

override func viewDidLoad() {
super.viewDidLoad()
newTimer.minutes = 7
newTimer.seconds = 60
}

}

以下是被调用的函数:

func startStop() {

if startStopwatch == true {
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("updateStopwatch"), userInfo: nil, repeats: true)
startStopwatch = false
startStopButtonExt = "Stop"
} else {
timer.invalidate()
startStopwatch = true
startStopButtonExt = "Start"
}
}

func updateStopwatch() -> String {
seconds -= 1
if seconds == 0 && minutes == 0 {
timer.invalidate()
labelText = "0:00"
return self.labelText
}
if seconds == 0 {
labelText = "\(minutes):00"
print(labelText)
minutes -= 1
seconds = 60
}
var secondsString = seconds > 9 ? "\(seconds)" : "0\(seconds)"
var minutesString = minutes > 9 ? "\(minutes)" : "\(minutes)"
if seconds == 60 {
secondsString = "00"
minutesString = "\(minutes + 1)"
}
stopWatchString = "\(minutesString):\(secondsString)"
labelText = stopWatchString
print("\(stopWatchString) test")
return self.stopWatchString
}

最佳答案

每次您想要从另一个线程操作主线程上的 UI 标签时,都必须调用 view.setNeedsDisplay

关于ios - 如何让我的 Swift 类实时更新 View Controller 中的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36499845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com