我知道我可以使用followign語法(How to program a delay in Swift 3)的斯威夫特3延遲部分代碼裏面SWIFT 3延時:創建一個循環
let when = DispatchTime.now() + 2 // change 2 to desired second delay.
DispatchQueue.main.after(when: when) {
// run your code with delay
}
或者類似的帖子:How to create dispatch queue in Swift 3
然而,這些不是我可以使用的延遲方法。我需要在循環中插入一個延遲。例如,假設有一個標籤組件和一個按鈕。當我點擊該按鈕時,我希望標籤連續顯示循環變量:
@IBOutlet weak var showIntegers: UILabel!
@IBAction func countNums(_ sender: AnyObject) {
for i in 1...5 {
showIntegers.text = String(i)
//delay code here, sleep(1) doesn't work
}
}
我用睡眠作爲延遲但隨後的應用休眠5秒,然後顯示5.我看不到1,2,連續3秒,4秒和5秒延遲1秒。
我也弄不清楚如何在循環內部使用DispatchQueue類。感謝您的幫助提前。
我會給你一個非常重要的建議 - 不要插入循環中的延遲。無論何時你認爲你需要「睡眠(...)」,你都應該真正思考如何在不阻止等待的情況下寫入函數。 – Sulthan
我不明白你想暫停循環的原因。但是一般來說,你不應該阻塞主線程(IBAction會在主線程中被觸發)。總是有一個更好的解決方案。您需要學會處理異步事件並在正確的時間對其進行響應。 –
@M_G謝謝你的建議,但我沒有要求建議,如果你知道如何在這裏插入延遲,我會很高興,如果你分享... – Graeme