ios - 如何让数组一一显示在标签上

标签 ios arrays swift label

我试图让数组中的单词一次在标签上显示一个,但是使用我的代码,数组中的最后一个单词会显示出来。我想要的是我的标签显示Hello[wait](最好在某个时间调整一定的时间)World[wait]测试[wait] 数组

这是我的代码:

import UIKit

// Variables
let stringOfWords = "Hello World. Say Hello. Test Number One."
let stringOfWordsArray = stringOfWords.components(separatedBy: " ")

class ViewController: UIViewController {
   // Outlets
   @IBOutlet weak var labelWords: UILabel!


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        for word in stringOfWordsArray  {
            labelWords.text=(word)
        }
    }
}

我希望能够有一个调节器来调节单词显示的速度以及开始和停止按钮。如果有人可以帮助我完成主要部分,那就太好了。

最佳答案

最简单的方法是使用计时器,这样您就可以调用启动/停止它并调整时间(在下面的示例中为 2 秒):

var timer: Timer?
var wordIndex = 0

override func viewDidLoad() {
    super.viewDidLoad()
    timer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(update), userInfo: nil, repeats: true)
}

@objc func update() {
    label.text = stringOfWordsArray[wordIndex]
    if wordIndex < (stringOfWordsArray.count - 1) {
        wordIndex += 1
    }
    else {
        // start again ...
        wordIndex = 0
    }
}

@IBAction func startAction(_ sender: Any) {
    timer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(update), userInfo: nil, repeats: true)
}

@IBAction func stopAction(_ sender: Any) {
    // remember to invalidate and nil it when you leave view
    timer?.invalidate()
    timer = nil;
}

关于ios - 如何让数组一一显示在标签上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48844720/

相关文章:

ios - 当我的应用程序在 iOS 上终止时,保存 NSUserDefaults 的正确方法是什么

android - 为什么移动设备上的屏幕绘图被认为是 "expensive"?

ios - 使用字典值填充 tableView 内的 collectionView 标签

swift - Swift 4 中的选择器实现

swift - 为什么不激活(忽略OtherApps :) enable the menu bar?

ios - UIImage 和 prepareforSegue 无法传递图像

javascript - 使用构造函数将对象插入数组?

c++ - 在 C++ 中扩展继承的数组

ios - Swift - 一个月后重置数据

ios - 在 UITableView 中选择时无法更改分隔符(自定义 UIView)颜色