[英]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;
}
}
有兩個注意事項:
確保您的日期選擇器具有countDownTimer模式。 如文檔所述 :
如果日期選擇器的模式不是
UIDatePicker.Mode.countDownTimer
,則此值[countDownDuration
]是不確定的...
如果您在IB上添加了此功能,則可能要將“日期”屬性設置為“自定義”。 當文檔警告我們時:
注意
當您使用Interface Builder將Mode屬性設置為Count Down Timer並為timer屬性指定一個值時,您的日期選擇器在構建和運行項目時可能不遵守Timer屬性值。 如果發生這種情況,請返回日期選擇器的“屬性”檢查器,在“日期”彈出菜單中選擇“自定義”(您可以忽略關聯的值),然后重建項目。
在我為IB中的“日期”彈出菜單選擇“自定義”之前,我注意到非常奇怪的countDownDuration
值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.