Swift

时间:2015-07-13 18:42:10

标签: swift loops

我在Swift中寻找一种方法来循环一个循环遍历字符串数组的变化标签。我尝试过的大多数方法都在循环运行时停止了所有其他任务。

1 个答案:

答案 0 :(得分:1)

你的视图控制器看起来像这样:

class ViewController: UIViewController {

    @IBOutlet weak var cycleLabel: UILabel!

    var strings: [String]!
    var timer: NSTimer!
    var index: Int = 0

    override func viewDidLoad() {
        super.viewDidLoad()
        self.strings = ["Lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit", "Vestibulum", "erat", "lacus", "congue"]
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        self.cycleLabel.text = self.strings[self.index]
    }

    @IBAction func beginCyclingTapped(sender: UIButton) {
        let interval = 1.0

        if self.timer.valid {
            self.timer.invalidate()
        }

        self.timer = NSTimer.scheduledTimerWithTimeInterval(interval, target: self, selector: "updateLabel", userInfo: nil, repeats: true)
    }

    func updateLabel() {
        self.index += 1
        self.cycleLabel.text = self.strings[self.index % self.strings.count]
    }

}

此代码每隔一秒将标签文本更新为strings属性中的下一个字符串。如果您想要不同的间隔,请在interval方法中更改beginCyclingTapped(:)常量。标签将在到达该数组中的最后一个元素后从strings数组的开头重新开始。 beginCyclingTapped(:)中的if语句确保不会安排多个计时器更新该标签,这会导致标签的更新频率超出预期。另外,请务必将IBOutlet与您的情节提要上的UILabel挂钩。