0
我想通過屏幕上的一組圖像,每個圖像之間有一個延遲。iOS:表視圖中的方法和數據被稱爲過早
func showImageAtIndex(index: Int) {
// all UI updates happen on the main queue
dispatch_async(dispatch_get_main_queue()) {
if (index) > self.images.count-1 { self.otherView.removeFromSuperview()
self.imageView?.removeFromSuperview()
return
}
self.imageView?.image = self.images[index]
let delayTime = 0.13
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(delayTime * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) {() -> Void in
self.showImageAtIndex(index + 1)
}
}
在我的表視圖,單擊一個按鈕時,該方法showImageAtIndex被稱爲
func onAdd(sender: AnyObject) {
self.temp=self.lotteryMachine.setPossibleCombinations(currentStandings)
//i took out the image view stuff bc its not necessary
self.navigationItem.rightBarButtonItem!.enabled = false
self.navigationItem.leftBarButtonItem!.enabled = false
self.showImageAtIndex(0)
tableView.reloadData()
self.navigationItem.rightBarButtonItem!.enabled = true
self.navigationItem.leftBarButtonItem!.enabled = true
}
我想知道的是,爲什麼在表中的數據首先被重新加載,然後將圖像被加載而不是其他方式。我想要發生的是圖像加載,然後數據在延遲後更新。
我明白了爲什麼它會盡早重新載入數據,但是當我在dispatch_after段中移動數據時,它仍然會過早地重新載入數據。我認爲,因爲它是一個遞歸函數,它會在第一次調用之後重新加載數據(所顯示的第一個圖像),但是我希望在顯示所有圖像數組後加載它。因爲我知道數組的長度,我應該設置一個計數並每次遞增一次,如果它等於length-1,只需重新加載數據? –
這應該工作,如果你正在檢查並重新加載dispatch_after內的數據。 –
我結束了它在調度異步第一if語句,它工作正常 –