我正在實施一個UICollectionView,通過Parse從在線獲取其數據。我正在將圖像加載到集合視圖中。我遇到的問題是,在重新加載單元格之前,調用collection視圖的一個委託方法會被調用。UICollectionView在實例化單元之前調用委託方法?
我有一個將背景中的對象加載到NSArray中的方法。一旦完成,我重新加載我的收藏視圖。從那裏我的代表方法被稱爲collectionView:cellForItemAtIndexPath
之前。我的委託方法處理每個單獨單元格的大小,以便它們可以根據照片的大小進行更改。
這是一個問題,因爲單元格需要在它們中有圖像,以便我能夠看到它們代表方法的大小。
我的委託方法是這樣的:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(NHBalancedFlowLayout *)collectionViewLayout preferredSizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CustomCollectionViewCell *currentCell = (CustomCollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];
if (currentCell) {
return [currentCell.cellImage.image size];
}
return [cellImage size];
}
就像我說的,此委託方法被collectionView:cellForItemAtIndexPath
之前調用。這導致局部變量'currentCell'返回零。我可以做什麼,以便我可以正確地設置這個,所以我的所有細胞都加載後,我打電話給代表?
非常感謝大家回來!你是如何在Parse上保存圖像尺寸的?你可以將它保存爲CGSize對象,還是單獨保存高度/寬度? – Jonathan
是的,我將寬度和高度單獨保存爲NSNumber對象。它希望看看'[myParseImage setObject:imageWidth forKey:width]'然後像往常一樣用'[myParseImage saveInBackground]'保存它。 –
我其實還有一個問題。問題是,爲了從PFFile中檢索圖像,您必須通過塊加載它。一旦該塊被加載,我可以訪問該圖像。從那裏我可以得到寬度/高度。問題是你不能從塊中返回一個值。有任何想法嗎? – Jonathan