Swift:为什么即使我使用计时器更改其文本属性,我的标签也不会更新?

时间:2017-05-11 04:14:32

标签: ios swift

我只想实现一个简单的时钟,这是我的故事板:

enter image description here

代码:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var timeLabel: UILabel!
    let dateFormatter = DateFormatter()

    override func viewDidLoad() {
        super.viewDidLoad()
        dateFormatter.dateFormat = "hh:mm:ss"
        _ = Timer.init(timeInterval: 0.1, target: self, selector: #selector(updateClock), userInfo: nil, repeats: true)
    }

    func updateClock() {
        self.timeLabel.text = dateFormatter.string(from: Date())
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

标签只会显示00:00:00。有人可以给我一些建议吗?

1 个答案:

答案 0 :(得分:3)

您必须创建Timer(您已完成)并计划。这会将它添加到运行循环中,因此它实际上会触发。

最简单的方法是使用Timer.scheduledTimer(timeInterval:target:selector:userInfo:repeats:)Timer创建和安排_ = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(updateClock), userInfo: nil, repeats: true)

Timer

请注意,您可能还应该存储对currentItem.TotalPrice = currentItem.NumberOfItems * currentItem.Price; 的弱引用,以便在您希望它停止触发时使其无效。