2016-12-31 3 views
-1

Код ниже - это таймер. Через 3 секунды я хотел бы, чтобы у пользователя была возможность отключить таймер. Я попытался объяснить, что я пытался сделать в разделе комментариев - я пробовал, что я прокомментировал, но это не сработало. Я хотел бы оставить код одинаковым, мне просто нужно найти способ остановить таймер, используя UIButton i.Как остановить таймер от UIButton?

import UIKit 
class ViewController: UIViewController { 
    @IBOutlet var i: UIButton! 
    @IBOutlet var u: UILabel! 

    var time = 0 
    var timer = Timer() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    @IBAction func start(_ sender: Any) { 
     b() 
    } 

    func action() { 
     time += 1 
     u.text = String(time) 
     if time == 2 { 
      u.alpha = 0 
     } 
     else if time > 3 { 
      u.alpha = 0.5 

       // if i.isSelected{ 
       // timer.invalidate} 
     } 
     else { 
      return 
     } 
    } 
    func b(){ 
     timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.action), userInfo: nil, repeats: true) 
    } 

ответ

2
  • Объявить таймер в качестве дополнительного

    var timer : Timer? 
    
  • Заменить IBAction start с

    @IBAction func start(_ sender: AnyObject) { 
        if timer == nil { 
         b() 
        } else { 
         timer?.invalidate() 
         timer = nil 
        } 
    } 
    
+0

Нет точки проверки 'nil', * не * связывания, то используя условную цепочку. http://pastebin.com/Nghur9XK – Alexander

+0

Вероятно, нужно использовать 'invalidate()', а не просто 'invalidate'. Разве компилятор не дает вам предупреждение? – jtbandes

+0

@vadian эта работа однако кнопка i не приводит к остановке таймера. Кнопка запуска - это то, что заставляет таймер начинать остановку. Я бы хотел, чтобы кнопка i остановила таймер. –

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