arrays - Swift 中的 NSTimer 将标签设为数组值

标签 arrays swift xcode nstimer

您好,我正在尝试获取一个数组并更新标签以每隔一秒显示数组中的每个元素。一个例子是我有数组 [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

关于arrays - Swift 中的 NSTimer 将标签设为数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44057253/

相关文章:

arrays - 使用 Struct 的 Encodable 协议(protocol)解码 2D 多边形坐标

swift - 查看边框颜色不变

ios - 自定义 Action 控件 Swift 3.0

arrays - 带有要排列的行的标量

ios - 如何从pdf文件中删除注释

ios - 从值是字典数组的字典中获取值

swift - 无法标记属性@IBInspectable

Ios 用户通知内容附件(图片)调整大小/隐藏通知扩展(长按)

c - 如何使用用户输入打开文本文件,然后将其加载到二维数组中?

java - 使用java中的lambda表达式将一个映射转换为另一个映射的最简单方法