用计时器更改UILabel的文本

时间:2015-12-25 12:12:52

标签: ios swift uilabel

我想在一段时间后更改UILabel的文本。但是在设定的时间后文本没有改变。我该如何解决这个问题?

看我的代码:

var countDownText = "hello"

override func didMoveToView(view: SKView) {

startButton = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 90))
    startButton.text = "\(countDownText)"
    startButton.center = CGPointMake(view.frame.size.width / 2, view.frame.size.height/2)
    startButton.textColor = UIColor.darkGrayColor()
    startButton.font = UIFont(name: "Arial", size: 20)
    startButton.textAlignment = NSTextAlignment.Center
    self.view?.addSubview(startButton)

countDownTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("countDownFunc"), userInfo: nil, repeats: true)

}

func countDownFunc(){
        theTime++

        if(theTime >= 4){
            countDownText = "testText"
        }

        if(theTime >= 8){
            spawnEnemys()
            startButton.removeFromSuperview()
            countDownTimer.invalidate()
        }
        print(theTime)

    }

提前感谢您的所有帮助:D

2 个答案:

答案 0 :(得分:3)

您的countDownFunc应该是:

func countDownFunc(){
    theTime++

    if(theTime >= 4){
        countDownText = "testText"
        startButton.text = countDownText
    }

    if(theTime >= 8){
        spawnEnemys()
        startButton.removeFromSuperview()
        countDownTimer.invalidate()
    }
    print(theTime)

}

答案 1 :(得分:2)

您的代码存在设计缺陷。

您更改分配给视图控制器的countDownText属性的字符串,但这也不会更改标签的当前文本。

这是一个简单的游乐场示例来说明问题:

import UIKit

var str = "Hello, playground"

var label = UILabel()
label.text = str
str = "Goodbye, playground"

print(label.text) // "Hello, playground"

如果您还想更新标签的文本,则需要更新其文本属性,类似于您最初的操作:

startButton.text = "\(countDownText)"

这将更新标签的文本以匹配countDownText属性的新值。