在准备好数据之前,如何防止 cellForItemAtIndexPath 执行?

IIl*_*Ill 0 objective-c nsurlconnection ios swift

我将图像作为 Base64 数据从我的服务器返回到我的应用程序,但在我获得用户的位置之前我不会向我的服务器询问图像,只有在用户登录到应用程序后我才会获得该位置应用程序(显示 UICollectionView)。

我的问题是collectionView:cellForItemAtIndexPath:在我为单元格准备好数据之前就被调用了。NSURLConnection在收到服务器的完整响应并且拥有 Base64 编码的图像数据之前,我可以通过哪些方式阻止调用此方法?

(这也可能与我使用作为UICollectionView并且NSURLConnectionDataDelegateNSURLConnectionDelegate有一个单独的类(RenderMetadata())来获取图像有关。)

编辑:感谢您所有创新的答案!我已经找到了一种方法来实现我所追求的目标。我会解释,但我还没有分享我的代码,所以我认为提出它不是一个好主意,因为这只会导致混乱。基本上,我在故事板中的视图控制器中添加了一个对象,该对象引用了我用来从服务器获取 Base64 编码图像字符串的类。

Raf*_*fAl 5

设置集合视图委托并在收到响应时重新加载集合。在此之前,将它们保留为空。如果集合视图的delegatedataSource为零,则不会加载数据。

func handleDataLoaded() 
{
    // Your code that handles data.
    ...

    // Load the collection with data
    self.collectionView.delegate = self
    self.collectionView.dataSource = self

    self.collectionView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)