2014-10-19 77 views
0

我有一個自定義的UICollectionViewCell具有定義兩種類型的單元的枚舉屬性。假設有一個imageView,另一個類型有一個UILabel。在這兩種類型中,還有其他屬性是彼此共同的。在cellForItemAtIndexPath:方法我:自定義初始值設定爲自定義UICollectionViewCell

CustomCollectionViewCell *cell = (CustomCollectionViewCell*)[self.collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath]; 

cell.typeOfCell = enumCellType1; // or enumCellType2 

,並在CustomCollectionViewCell初始化(initWithFrame :)我應該怎麼分配?在這一點上,我仍然不知道它是什麼類型的細胞。

我使用layoutSubviews來設置所有常用屬性的框架,此時我知道typeOfCell值,因此我可以設置imageView或UILabel框架。但其中之一必須先在initalizer中分配。

如果我有一個自定義的初始化程序,我可以發送正確的類型並設置屬性,但那不起作用,我試了一下。

是否有可能創建一個自定義的initalizer或者是否需要創建2個自定義的CollectionViewCells?

我沒有使用任何xibs。

謝謝。

回答

1

爲什麼不使用繼承?創建一個完成所有常用設置的超類,然後創建兩個子類來完成特定的設置。然後,您將有兩個不同的重用標識符和直接cellForItemAtIndexPath:

分配權類型細胞的設置單元格「類型」被忽略的面向對象的繼承,也將導致你重用的問題。

+0

我同意。但有可能創建一個自定義的初始化器嗎? – lopes710 2014-10-20 13:35:38

+0

是的,它應該是。你說「它不工作」 - 發生了什麼 – Paulw11 2014-10-20 19:39:13

+0

我做了一個具有共同屬性的超類單元和2個單元來定義類型。我不知道爲什麼自定義初始化程序沒有工作。 – lopes710 2014-10-20 22:23:59