2013-08-22 4 views

답변

24

이전에 UICollectionView을 사용하지 않았지만 UIScrollView에서 상속 할 때 나는 UITableView과 매우 유사하다고 생각합니다.

하나 CollectionView를 사용하여, 당신은 collectionView.delegate = self;collectionView.dataSource = self을 설정해야 겠지하고 .h - 파일에 클래스가 비슷한 <UICollectionViewDelegate, UICollectionViewDataSource> 또는 무언가를 사용하고 있는지 확인하십시오. collectionView의 델리게이트를 자신의 뷰 (self)로 설정할 때, collectionView에 제공된 데이터가 delegate-methods에서 자신의 클래스에서 제공되는지 확인해야합니다. 당신이 이미 이것을 알고있을 것입니다, 그것은 하나의 collectionView로 꽤 솔직해야합니다. 두 collectionViews을 사용하는 경우

는, 당신은

collection1.delegate = self; 
collection2.delegate = self; 
collection1.dataSource = self; 
collection2.dataSource = self; 

그래서 모두 collectionViews가 대리자 메서드를 호출 그렇게 다시이 뜻을 설정해야합니다. 예를 들어, 대리자 메서드 -collectionView:cellForItemAtIndexPath:이 두 번 호출됩니다. collection1에 대해 한 번, collection2에 대해 한 번.

그들에 보내 정확한 데이터를 얻을 수 있는지 확인하려면, 당신은 다음과 같이, 모든 대의원과는 dataSource 방법의 시작 부분에서 간단한 검사를 만들어야합니다

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(collectionView == collection1) 
    { 
     //return cell for collection1 
    } 
    else 
    { 
     //return cell for collection2 
    } 
} 

을 여기에, 내가 collectionView 경우 확인 해요 collection1 또는 collection2과 같습니다. 위임 메서드는 해당 메서드를 호출하는 UICollectionView로 collectionView을 제공하며 그 중 하나 여야합니다. 그래도 collectionView에 대한 collectionViews 중 하나를 호출 한 경우 이는 의심 스러울 수 있으므로 논리적으로 이름을 지정해야합니다.

+0

'if (collectionView == collection1)'을'if ([collectionView isEqual : collection1])'로 변경하여 평등성을 테스트 할 수 있습니다. –

+2

아니요, == 올바른지 (두 포인터가 같은 것을 가리키고 있는지 테스트하고 있음) – HughHughTeotl

관련 문제