Ios 如何让我的Swift类实时更新viewcontroller中的标签?
我正在使用Swift 2+和秒表/计时器 基本上,我有一个类StopWatch2,我可以从我的ViewController调用它 我可以使类内的计时器开始、运行、停止和重置 我还可以让它在我的ViewController中更新标签,但只能用于“现在”。例如,如果我启动计时器,标签上会显示7:59。我可以在打印日志中看到计时器正在倒计时,但它没有更新标签。如果单击“停止”,标签将随当前时间更新 所有代码都在这里-。如果我需要发布代码示例,我很乐意 怎么办 标记 更新: 抱歉耽搁了。下面是我用于ViewController的代码 类ViewController2AC:UIViewController{ var newTimer=StopWatch2() } } 以下是正在调用的函数:Ios 如何让我的Swift类实时更新viewcontroller中的标签?,ios,swift,class,timer,nstimer,Ios,Swift,Class,Timer,Nstimer,我正在使用Swift 2+和秒表/计时器 基本上,我有一个类StopWatch2,我可以从我的ViewController调用它 我可以使类内的计时器开始、运行、停止和重置 我还可以让它在我的ViewController中更新标签,但只能用于“现在”。例如,如果我启动计时器,标签上会显示7:59。我可以在打印日志中看到计时器正在倒计时,但它没有更新标签。如果单击“停止”,标签将随当前时间更新 所有代码都在这里-。如果我需要发布代码示例,我很乐意 怎么办 标记 更新: 抱歉耽搁了。下面是我用于Vi
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
您必须在updateStopwatch
方法的末尾更新标签文本:
timerText.text = labelText
另外,我建议您使用格式字符串而不是number>9
String(format: "%02d", myInt)
这将对您的号码应用前导零您应该发布代码,而不是链接到代码。仅限于计时器的代码以及它如何更新labelMake确保UI始终在主线程上更新,请发布您实际使用的viewcontroller的代码,因为我可以在一个文件中看到很多类,这让人困惑。我也没有看到你在任何地方实例化秒表2!?
timerText.text = labelText
String(format: "%02d", myInt)