是否可以将UICollectionViewCell
userInteractionEnabled
设置为false
,而imageView
仍然为空,或者不要让performsegue
到详细视图?我试图这样做,但不起作用。以下示例方法:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CustomCollectionViewCell
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
cell.userInteractionEnabled = false
cell.products.image = UIImage(named: "placeholderImage")
cell.activityIndicator.startAnimating()
let p = self.products[indexPath.row] as Product
if let img = UIImage(data: p.productImage) {
cell.products.image = img
}
else {
self.loadImages(p, indexPath: indexPath)
}
dispatch_async(dispatch_get_main_queue()) {
// update some UI
cell.activityIndicator.stopAnimating()
cell.userInteractionEnabled = true
}
}
return cell
}
答案 0 :(得分:0)
我认为你正在使用dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0))
。您正在其中放置UI更新(即启动微调器动画),这是错误的。我理解你想要使用异步图像加载的代码,以及我肯定建议使用的代码
SDWebImage library这样做。这是一个很棒的库,可以很好地加载异步图像。
只需使用它并将所有代码放在主线程中,这样就不需要使用任何dispatch_async。