2012-11-05 14 views
7

Farklı özel hücreler içeren bir koleksiyon görünümüm var.UICollectionView: UICollectionViewCell nesnesi her zaman null boyutundadırForItemAtIndexPath

Bu hücreler, boyut olarak değişen farklı içerikler içerir.

Hücreler, Storyboard'da tanımlanmıştır, bu nedenle kodda kayıt gerekmez.

ben şimdi tek yapmak istediğim

içeriğine bağlı olarak temsilci yönteminde boyutunu değiştirmek: Her hücre için beklendiği gibi denir

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 

id cellAtIndexPath = [collectionView cellForItemAtIndexPath:indexPath]; 

NSLog(@"The cell: %@", cellAtIndexPath); 

... 
e.g. calling sizeToFit methods and cumulating the sizes of the cells' subviews 
... 

} 

Yöntemi, ancak cellAtIndexPath olursa olsun her zaman, NULL döndürür ne ben denenmiş. Dolayısıyla, indexPath veya içerik görünümündeki hücre nesnesine erişemiyorum.

Hücre nesnesine neden erişemediğime dair herhangi bir öneriniz var mı?

cevap

11

collectionView:layout:sizeForItemAtIndexPath yöntemi, koleksiyon görünümünün akış düzeni nesnesine göre çağrılır. Düzen, 'dan önce bir hücrenin boyutunu sormak için, hücreler toplama görünümüne eklenir. İstediğiniz hücre boyutunu "kendi başınıza" hesaplamanız ve geri vermeniz gerekecektir.

+2

Teşekkürler! Bu nedenle, bu bakış açısından, alt görüntülemelere bağlı olarak farklı hücre yükseklikleri ayarlamak mümkün değildir (genellikle hesaplamak için sizeToFit'i çağırınız)? Hücrelere, içeriğine bağlı olarak "yeniden boyutlandırma" imkanı yok mu? Örneğin. UILabels için, yüksekliği çizgi ve textlength ile hesaplamanız gerekir. Ve bu çok yanlış olur. – crud21

+0

Sağ. İçeriğine bağlıysa hücre boyutunu hesaplamanın yollarını bulabilir, ancak hücre görünümlerine bağlı olamazsınız. (Örn. 'NSString', metin boyutlarını elde etmek için yöntemler sağlar.) – chris

+4

Bu aptalca ve talihsiz ... UITableView' veri kaynağına gitmiyor ve henüz var olmayan bir hücreye soruyorsanız hücreyi almıyor ? – jtbandes

İlgili konular