2016-12-31 47 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讓計時器停止。 –