Изменение / зацикливание текста в метке - PullRequest
0 голосов
/ 15 марта 2019

Я хочу, чтобы моя метка меняла текст каждые 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!"
}

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Вы можете отслеживать текущий текст, имея свойство index. Также вы можете использовать Timer с закрытием block и избежать использования 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
    }
}
0 голосов
/ 15 марта 2019

Вы можете просто использовать логическое значение для переключения текста каждые 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
}
...