#ios #swift #xcode #label #uilabel
#iOS #swift #xcode #ярлык #uilabel
Вопрос:
Я хочу, чтобы моя метка меняла текст каждые 5 секунд, rLabel.text = "(update) free trial"
подождите еще 5 секунд, затем измените ее rLabel.text = "upgrade now!"
~ при повторении.
rLabel.text = "(update) free trial"
if daysLeft <= 5 {
let timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)
timer.fire()
}
} else {
rLabel.text = "(update) free trial"
}
@objc func update() {
rLabel.text = "upgrade now!"
}
Комментарии:
1. Можете ли вы более подробно объяснить, в чем проблема? Насколько я могу судить, ваш приведенный выше код должен работать просто отлично.
2. С вашим вопросом возникла проблема. Откуда берутся секунды? Где установлено обновление? Ваш вопрос является неполным без этих двух сведений
Ответ №1:
Вы можете просто использовать логическое значение для переключения текста каждые 5 секунд
override func viewDidLoad() {
let timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)
}
var isShowingText1 = false
@objc func updateText(){
rLabel.text = isShowingText1 ? "Text 2" : "Text 1"
isShowingText1 = !isShowingText1
}
Ответ №2:
Вы можете отслеживать текущий текст, имея index
свойство. Также вы можете использовать Timer
with block
closure и избежать использования Obj-C-ish #selector
var index = 0 {
didSet {
if index > 1 { index = 0 }
}
}
var text: String {
return ["(update) free trial", "upgrade now!"][index]
}
func foo() {
rLabel.text = text
Timer.scheduledTimer(withTimeInterval: 5, repeats: true) { _ in
self.index = 1
self.rLabel.text = self.text
}
}