2016-02-24 42 views
1

我有兩個集合視圖作爲屬性的自定義視圖的屬性。所以我們給他們打電話self.collViewAself.collViewB。在實現數據源方法時,我使用if語句以正確的信息配置正確的集合視圖。我只是使用isEqual:來檢查每個數據源回調的collectionView參數。這適用於除sizeForItemAtIndexPath之外的每個數據源回調。CollectionView數據源方法調用不正確CollectionView參數

我實現如下:

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

    if ([collectionView isEqual:self.collViewA]) { 
      return CGSizeMake(25,25); 
    } 
    if ([collectionView isEqual:self.collViewB]) { 
     return CGSizeMake(50,50); 
    } 
    return CGSizeMake(10,10); 
} 

的問題似乎是,當兩個集合的觀點在我的設置方法實例化(初始化即是這些收集意見的超級自定義視圖之後調用)只有第二個if語句通過並且這兩個collection視圖都有50,50個大小的單元格。如果我刪除實例化第二個集合視圖的代碼,那麼比第一個如果WILL傳遞的代碼更精細,我將爲右側視圖獲取25,25個大小的單元格,但顯然沒有第二個集合視圖。

我沒有得到的是我如何在其他回調中使用與isEqual:相同的條件邏輯並且沒有問題。

回答

1

您可以使用標籤來解決

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

    if (collectionView.tag == 1) { 
      return CGSizeMake(25,25); 
    } 
    if (collectionView.tag == 2) { 
     return CGSizeMake(50,50); 
    } 
    return CGSizeMake(10,10); 
} 
+0

我發現一個黑客位的,但因爲清楚的CollectionView參數包括只是讓用戶可以區分不同的人的。 fwiw,我通過爲每個集合視圖使用兩個單獨的'UICollectionViewFlowLayout'來實現它。 –

相關問題