Swift 中的 NSTimer 使标签成为数组值

NSTimer in Swift making a label an array value

你好,我正在尝试使用我拥有的数组并更新标签以间隔一秒显示数组中的每个元素。一个例子是我有数组 [3,6,2],我的标签会显示 3,然后等一秒钟,然后显示 6,然后等一秒钟,然后显示 2。我见过很多 NSTimer 示例,它们的更新函数都是这样做的但仅在数字上增加,从不尝试解析数组。有人可以帮忙吗?

更新

我在 UIButton 中调用计时器,运行 遇到了问题。计时器工作正常,但我的计时器按钮功能中的代码在计时器和更新功能之前运行。我下面的代码生成一个随机数字数组,然后应该将它们相隔一秒显示。它这样做是正确的,但在更新和显示教科书中的数字之前,我在计时器下的打印语句是 运行 。我不知道为什么?计时器 运行 在不同的线程上吗?

func updateCountdown() {
    if(numbersIndex <= numberLimit){
        self.counter.text = String(numbers[numbersIndex])
    }else if(numbersIndex == numberLimit+1){
        self.counter.text = ""
    }else{
        timer!.invalidate()
        timer=nil
    }
    numbersIndex+=1
}


@IBAction func startButton(_ sender: AnyObject){
    startB.setTitle("", for: .normal)
    var highestLength = 3

    //for trialNumber in 0...11{
        var numberSequence = Array(repeating:11, count: highestLength)
        for count in 0...highestLength-1{
            var randomNumber = Int(arc4random_uniform(10))
            if(count>0){
                while(numberSequence.contains(randomNumber) || randomNumber-1 == numberSequence[count-1]){
                    randomNumber = Int(arc4random_uniform(10))
                }
            }
            numberSequence[count] = randomNumber
        }
        print(numberSequence)


        self.numbers = numberSequence
        self.numbersIndex = 0
        self.numberLimit = numberSequence.count-1
        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateCountdown), userInfo: nil, repeats: true)

        print("this should be last")
        //do other stuff too

    //}

}

你可以这样做。

var counter = 0
var list: [String] = ["Eggs", "Milk"]  

override func viewDidLoad() {
  super.viewDidLoad()

  var timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)

}


func update() {
  label.text = "\(list[counter])" 
  counter += 1
  if (counter >= list.count) {
     counter = 0
  }
}

这是假设您的标签名称是 label