2012-10-12 8 views
6

두 개의 UICollectionView로 뷰를 설정했습니다. 각보기에는 크기가 다른 배열이 배열되어 있습니다. collection1은 array1에 의해 지원되고 collection2는 array2에 의해 지원됩니다. 문제는 numberOfItemsInSection에서 collection1에 대해 반환 된 숫자가 두 컬렉션 뷰에 모두 적용된다는 것입니다.하나의 컨트롤러에있는 여러 개의 UICollectionView

예를 들어, array1의 크기가 4이고 array2의 크기가 5이면 두 컬렉션 모두 4 개의 요소가 표시됩니다. array1의 크기가 5이고 array2의 크기가 4 인 경우 collection2를 스크롤하면 collectionFor2에 대해 itemIndex가 5 인 cellForItemAtIndexPath가 호출되고 NSRangeException이 발생합니다.

각 컬렉션보기에 자체 크기를 사용하려면 어떻게해야합니까?

- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section; 
{ 
    if(view == self.colleciton1){ 
     return self.array1.count; 
    } else if (view == self.collection2){ 
     return self.array2.count; 
    } 

    return 0; 
} 

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; 
{ 
    if(cv == self.collection1){ 
     CharacterCell *cell = [cv dequeueReusableCellWithReuseIdentifier:FIRST_CELL_IDENTIFIER forIndexPath:indexPath]; 
     cell.label.text = self.array1[indexPath.item]; 
     return cell; 
    } else if (cv == self.collection2){ 
     EpisodeCell *cell = [cv dequeueReusableCellWithReuseIdentifier:SECOND_CELL_IDENTIFIER forIndexPath:indexPath]; 
     cell.label.text = self.array2[indexPath.item]; 
     return cell; 
    } 

    return nil; 
} 

문제점을 설명하는 프로젝트에 git repo가 ​​포함되었습니다.

[email protected] : civatrix/MultipleCollectionViews.git

답변

19

문제는 각 컬렉션에 대해 동일한 레이아웃 개체를 사용하고 있다는 것이 었습니다. 뒤돌아 보면 이해할 만하지만 각 collectionView마다 다른 레이아웃을 만들어야합니다.

+0

이것은 맞습니다. 나는 똑같은 문제가 있었다. 덕분에 –

+0

! 이게 내 문제를 해결했습니다! – ordinaryman09

+0

Up and Thanks !! 너무 내 꺼야! – z33

1

당신이 일을해야 무엇을 가지고. self.colciton1과 self.collection2 IBOutlets입니까? 그렇다면, 그들이 올바르게 연결되었는지 다시 확인 할 수 있습니까?

+0

모두를위한 두 개의 분리 된 UICollectionView 컨트롤러를 ContainerViews를 사용하도록 쉬울 것, 나는 각 컬렉션 뷰의 요소 중 일부를 참조하십시오. – Civatrix

3

아마 제대로 매여 각 UICollectionView

+1

좋습니다. 이렇게하면 코드가 명확 해지고 더 모듈화되므로 콜렉션 뷰 컨트롤러를 여러 곳에서 재사용 할 수 있습니다. –

관련 문제