2016-05-04 8 views
0

imは反応時間のアプリです。ラベルは秒でカウントされます。ラベルが1秒で表示されるようにしたいが表示されない。タイマーはうまく動作し、イメージだけが動作します。迅速にお願いします。あなたのfunc updateTime()の代わりに、viewDidLoad()タイマーが1のときに画像が表示されます。

if displayTimer.text == "00:01:00"{ 
    tapStop.image = UIImage(named: "carcrash") 
} 

を、そして自分のイメージをUIに更新されるように、メインスレッドにそれらを置く:

import UIKit 

class timerViewController: UIViewController { 

    var go = NSTimeInterval() 
    var timer = NSTimer() 


    @IBOutlet weak var tapStop: UIImageView! 
    @IBOutlet weak var displayTimer: UILabel! 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     if displayTimer.text == "00:01:00"{ 
      tapStop.image = UIImage(named: "carcrash") 
     } 


    } 

    @IBAction func stop(sender: UIButton) { 

     timer.invalidate() 
    } 


    @IBAction func start(sender: UIButton) { 

     if (!timer.valid) { 
      let test:Selector = "updateTime" 
      timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: test, userInfo: nil, repeats: true) 
      go = NSDate.timeIntervalSinceReferenceDate() 
     } 
    } 

    func updateTime(){ 
     var timeNow = NSDate.timeIntervalSinceReferenceDate() 
     var pass: NSTimeInterval = timeNow - go 


     let minutes1 = UInt8(pass/60.0) 
     pass -= (NSTimeInterval(minutes1) * 60) 
     let seconds1 = UInt8(pass) 
     pass -= NSTimeInterval(seconds1) 
     let milli1 = UInt8(pass * 100) 


     let minutes2 = String(format: "%02d", minutes1) 
     let seconds2 = String(format: "%02d", seconds1) 
     let milli2 = String(format: "%02d", milli1) 
     displayTimer!.text = "\(minutes2):\(seconds2):\(milli2)" 

    } 

} 

答えて

0

あなたはこれを置く必要があります。 func updateTime()は次のようになります。

func updateTime(){ 
    var timeNow = NSDate.timeIntervalSinceReferenceDate() 
    var pass: NSTimeInterval = timeNow - go 

    let minutes1 = UInt8(pass/60.0) 
    pass -= (NSTimeInterval(minutes1) * 60) 
    let seconds1 = UInt8(pass) 
    pass -= NSTimeInterval(seconds1) 
    let milli1 = UInt8(pass * 100) 


    let minutes2 = String(format: "%02d", minutes1) 
    let seconds2 = String(format: "%02d", seconds1) 
    let milli2 = String(format: "%02d", milli1) 
    displayTimer!.text = "\(minutes2):\(seconds2):\(milli2)" 

    if displayTimer.text == "00:01:00"{ 
     dispatch_async(dispatch_get_main_queue(),{ 
      tapStop.image = UIImage(named: "carcrash") 
     })  
    } 

} 
関連する問題