Изображение появляется когда отметчик времени на 1

im делает приложение времени реакции, и у меня есть набор меток для подсчета секунд. Я хочу, чтобы мое изображение появилось, когда метка находится на 1 секунду, но он не появляется. Таймер работает отлично, только изображение. Помогите мне в swift пожалуйста.

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)"

    }

}

1 ответ

  1. Вы должны поставить это:

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

    в вашем func updateTime()вместоviewDidLoad(), и поместить их в основной поток, так что ваш образ будет обновляться на пользовательском интерфейсе. Ваш 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")
            })    
        }
    
    }