簡體   English   中英

Swift 4:每次將TimeInterval設置為隨機數

[英]Swift 4: TimeInterval set to random number each time

我正在嘗試復制在iPhone上找到的默認Clock應用程序,以便更好地學習快捷方式並習慣iOS開發的不同部分。

我目前正在應用的計時器部分。 我有一個DatePicker來獲取日期,並且在計時器啟動時將countdownDuration屬性分配給TimeInterval。 但這每次都給我一個隨機值(似乎總是在80.0-120.0左右)

我完全理解,我可能對TimeIntervals的概念有誤,但是從我在網上閱讀的內容以及在《開發人員文檔》中的理解,我對這個概念正確嗎?

這是我用來運行計時器的代碼:

@IBOutlet weak var datePicker:UIDatePicker!

var IsTimerRunning:Bool = false;
var TimerDuration:TimeInterval = 0;

var timer:Timer?;

//Called every second when timer is running
@objc func onTimerFires() {
    TimerDuration = TimerDuration - 1.0;
    print (TimerDuration);
    if (TimerDuration <= 0.0) {
        EndTimer();
    }
}

func EndTimer() {
    timer?.invalidate();
    IsTimerRunning = false;
}

//Start button pressed
@IBAction func StartButtonPressed() {
    if (IsTimerRunning == false) {
        TimerDuration = datePicker.countDownDuration;

        timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(onTimerFires), userInfo: nil, repeats: true)

        IsTimerRunning = true;
    }
}

有兩個注意事項:

  1. 確保您的日期選擇器具有countDownTimer模式。 文檔所述

    如果日期選擇器的模式不是UIDatePicker.Mode.countDownTimer ,則此值[ countDownDuration ]是不確定的...

  2. 如果您在IB上添加了此功能,則可能要將“日期”屬性設置為“自定義”。 當文檔警告我們時:

    注意

    當您使用Interface Builder將Mode屬性設置為Count Down Timer並為timer屬性指定一個值時,您的日期選擇器在構建和運行項目時可能不遵守Timer屬性值。 如果發生這種情況,請返回日期選擇器的“屬性”檢查器,在“日期”彈出菜單中選擇“自定義”(您可以忽略關聯的值),然后重建項目。

    在我為IB中的“日期”彈出菜單選擇“自定義”之前,我注意到非常奇怪的countDownDuration值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM