我在Swift中寻找一种方法来循环一个循环遍历字符串数组的变化标签。我尝试过的大多数方法都在循环运行时停止了所有其他任务。
答案 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
挂钩。