2014-01-06 61 views
1

我使用自定義的UICollectionViewFlowLayout,我已經註冊了此佈局定製重用類...將數據傳遞到UICollectionReusableView

[self registerClass:[noContentDecoration class] forDecorationViewOfKind:knoContentsDecorationKind]; 

現在,我希望將一些數據傳遞給該裝飾觀點在初始化階段,我想在這個重用類

設置某些屬性,但我不能達到這個觀點,我只找到了UICollectionView此委託方法:

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingSupplementaryView:(UICollectionReusableView *)view forElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath 

但這裏的問題:這種方法只有當如文檔中提到的可重複使用的視圖被刪除調用:當一個補充視圖從集合視圖中刪除

使用此方法來檢測,而不是監控視圖本身來看它何時出現或消失。

我能做些什麼來傳遞數據到這個可重用的視圖在初始化?

謝謝

回答

2

您正在使用裝飾視圖。傳遞數據很複雜。

  1. 創建一個自定義子類UICollectionViewLayoutAttributes來保存數據。
  2. 在您的UICollectionViewLayout子類中,覆蓋layoutAttributesClass以返回您的自定義屬性類。
  3. 同樣在您的UICollectionViewLayout子類中,請在layoutAttributesForElementsInRect:layoutAttributesForDecorationViewOfKind:atIndexPath:中正確設置修飾視圖的屬性。
  4. 在您的裝飾視圖類(noContentDecoration)中,覆蓋applyLayoutAttributes:以將數據拉出屬性對象並應用它們。

這似乎太複雜了嗎?也許你會更好地使用補充視圖而不是裝飾視圖。如果使用補充視圖代替,步驟是:

  1. 在你UICollectionViewDataSource(這可能是您的視圖控制器),實現collectionView:viewForSupplementaryElementOfKind:atIndexPath:獲得視圖(使用dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:),然後用數據對其進行設置,然後把它返還。

如果您需要使用模型中的數據對其進行定製,則建議使用補充視圖而不是裝飾視圖。

+0

非常感謝你 –