Показать текущее время - PullRequest
       13

Показать текущее время

0 голосов
/ 05 апреля 2019

Я хочу отобразить текущее время на экране.

У меня есть фрагмент кода для отображения времени (один раз) У меня есть кусок кода для обновления (Таймер

Я не могу заставить их работать вместе, чтобы время обновлялось на экране.

PS: я знаю, что print ("FIRE") не будет отображать время, но каждая комбинация из двух, которые я пробовал, приводит кошибка.

func getCurrentDateTime() {
    let formatter = DateFormatter()
    formatter.dateStyle = .none
    formatter.timeStyle = .long
    let str = formatter.string (from: Date ())
    TimeNow.text = str
}

let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fire), userInfo: nil, repeats: true)

@objc func fire()
{
   print("FIRE")
}

Моя цель - вывести на экран большие часы.

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Моя рекомендация - основанный на блоках API Timer - это позволяет избежать атрибута @objc - и создавать DateFormatter один раз.

И, пожалуйста, соблюдайте соглашение об именах, начинающееся с имен переменныхстрочная буква.

var timer : Timer!

...

let dateFormatter : DateFormatter = {
    let formatter = DateFormatter()
    formatter.dateStyle = .none
    formatter.timeStyle = .long
    return formatter
}()

timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in 
    DispatchQueue.main.async {
        self.timeNow.text = formatter.string(from: Date())
    }
}
0 голосов
/ 05 апреля 2019

Я использовал ваш код, и он работает, если вы подключили TimeNow как IBOutlet UIlabel к вашему представлению раскадровки. Я установил таймер в моем viewDidLoad.

Вы можете попробовать либо приведенный ниже код, либо версию основного потока. На самом деле рекомендуется обновить пользовательский интерфейс из потока Nain. В моем случае оба работали:

@objc func fire()
{
    print("FIRE")
    getCurrentDateTime()

}

@objc func fire()
{
   print("FIRE")
   DispatchQueue.main.async {
      self.getCurrentDateTime()
   }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...