2016-11-19 3 views
1

Я не уверен, почему, но каждый раз, когда я запускаю приложение, мой таймер не будет вызывать функцию обновления. Я пробовал все: используя #selector, добавляя двоеточие в конце обновления, ничего не работает. Я добавил заявление о печати внутри моего обновления, чтобы убедиться, что он дошел до него, и оператор печати никогда не печатает! Я не уверен, почему это не называется .... Помогите! Постскриптум Я знаю, что выбранный действительно является одним из вариантов в выражении if, у меня был оператор печати для этого, и он работает.Таймер не будет вызывать функцию выбора

if (selected == "05 seconds") { 
     count = 5 
     timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true) 

    } 
    else if (selected == "10 seconds") { 
     count = 10 
     timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true) 
    } 
    else if (selected == "20 seconds") { 
     count = 20 
     timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true) 
    } 
    else if (selected == "30 seconds") { 
     print("I'm here!") 
     count = 30 
     timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true) 
    } 
    else if (selected == "Single Shot") { 
     SendButton.isHidden = false 
     countDownLabel.isHidden = true 
    } 
} 
    func update() { 
    print("Now I'm in update!") 
    count = count - 1; 
    countDownLabel.text = String(count) 
} 
+1

Также правильный способ использования селекторов в Swift 3 - '#selector (update (_ :))'. Таким образом вы можете передать отправителя функции. – TheValyreanGroup

ответ

5

Таймер не работает, так как метод вы используете требует, чтобы таймер явно добавлен в runloop.

Используйте API, который неявно добавляет таймер к runloop.

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

PS: Синтаксис #selector является предпочтительным, поскольку он проверяет наличие методы действия во время компиляции.

+0

Спасибо вам большое! Это исправило мою проблему :) –

+0

Я сделал это точно, но он по-прежнему не вызывает мою функцию обновления ... Знаете почему? – RufusV

+0

Могло быть много причин. Соответствует ли функция селектору? Есть ли сильная ссылка на «таймер». Является ли «цель» в том же классе, что и «селектор»? – vadian

 Смежные вопросы

  • Нет связанных вопросов^_^