Я пытаюсь обновить таймер обратного отсчета в части сообщения UIAlertController. Я пробовал множество ответов, предложенных здесь, но без радости. У меня есть простой ViewController, чтобы попробовать, чего я пытаюсь достичь.Проблемы с обновлением таймера обратного отсчета в UIAlertController
class ViewController: UIViewController {
var counter:Int = 5
var timer: NSTimer?
var label = ""
var message = "in "
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
showAlert()
}
func showAlert(){
let alertController = UIAlertController(title: "Try again ", message: countDownString(), preferredStyle: .Alert)
presentViewController(alertController, animated: true){
self.timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(self.decrease), userInfo: nil, repeats: true)
}
}
func decrease()
{
var minutes: Int
var seconds: Int
if(counter > 0) {
self.counter -= 1
print(counter) // Correct value in console
minutes = (counter % 3600)/60
seconds = (counter % 3600) % 60
label = String(format: "%02d:%02d", minutes, seconds)
print(label) // Correct value in console
}
else{
dismissViewControllerAnimated(true, completion: nil)
timer!.invalidate()
}
}
func alertMessage() -> String {
print(message+"\(self.label)")
return(message+"\(self.label)")
}
func countDownString() -> String {
print("\(counter) seconds")
return "\(counter) seconds"
}
}
Счетчик и ярлык как показывают правильные значения в консоли, но я не могу получить их для отображения значений в UIAlertController. скриншоты показывают результат, который я получаю в контроллере вида.
Куда я иду не так?
Я использую Xcode 7.3 и Swift 2,2
такое же решение. но ты избил меня. :) –
Отлично, спасибо, хорошо работает. Одна маленькая икота, сначала она отображает 5, затем 00:04, 00:03 и т. Д. Как я могу изменить начальную переменную, чтобы отобразить 00:05 в соответствии с остальными? – scooby
Или даже не отображать начальное значение? – scooby