#ios #swift #nstimer
#iOS #swift #nstimer
Вопрос:
Я использую таймер с repeats: false
, поэтому он запускается один раз, при этом однократном запуске до достижения временной задержки я хочу остановить выполнение таймера.
timer?.invalidate()
timer = nil
//is not working
приведенный ниже фрагмент кода — это пример, который я пробовал
var timer : Timer?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
timer = Timer()
}
@IBAction func startAction(_ sender: Any) {
timer = Timer.scheduledTimer(withTimeInterval: 10.0, repeats: false, block: { (make) in
print("ack did")
})
}
@IBAction func cancelAction(_ sender: Any) {
timer?.invalidate()
}
итак, здесь сначала я нажимаю на пуск, чтобы таймер запустился, и жду указанные 10 секунд,
я хочу, чтобы это выполнение останавливалось, когда пользователь нажимает на отмену. Заранее спасибо 🙂
Ответ №1:
Да, это возможно, и вы даже показали код для остановки таймера. То, что вы опубликовали, будет работать.
Обратите внимание, что строка
timer = Timer()
По-вашему viewDidLoad()
бессмысленно. Не создавайте одноразовый таймер только для того, чтобы сделать вашу переменную ненулевой