我试图在屏幕上浏览一组图像,每个图像之间都有延迟。
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
}
我想知道的是为什么首先重新加载表中的数据,然后加载图像而不是反过来。我想要发生的是加载图像,然后在延迟后更新数据。
答案 0 :(得分:1)
您的showImageAtIndex
函数使用dispatch_async
,这意味着闭包内的所有内容都是异步发生的。
对showImageAtIndex(0)
的调用立即返回,并且tableView.reloadData()
的调用发生在执行dispatch_after
闭包内的延迟代码之前。
尝试在tableView.reloadData()
关闭内调用showImageAtIndex(index + 1)
后移动dispatch_after
。