Ios 如何让我的Swift类实时更新viewcontroller中的标签?

Ios 如何让我的Swift类实时更新viewcontroller中的标签?,ios,swift,class,timer,nstimer,Ios,Swift,Class,Timer,Nstimer,我正在使用Swift 2+和秒表/计时器 基本上,我有一个类StopWatch2,我可以从我的ViewController调用它 我可以使类内的计时器开始、运行、停止和重置 我还可以让它在我的ViewController中更新标签,但只能用于“现在”。例如,如果我启动计时器,标签上会显示7:59。我可以在打印日志中看到计时器正在倒计时,但它没有更新标签。如果单击“停止”,标签将随当前时间更新 所有代码都在这里-。如果我需要发布代码示例,我很乐意 怎么办 标记 更新: 抱歉耽搁了。下面是我用于Vi

我正在使用Swift 2+和秒表/计时器

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

我可以使类内的计时器开始、运行、停止和重置

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

所有代码都在这里-。如果我需要发布代码示例,我很乐意

怎么办

标记

更新:

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

类ViewController2AC:UIViewController{ var newTimer=StopWatch2()

}

}

以下是正在调用的函数:

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)