최종 결과는 하나의보기 컨트롤러에 2 개의 컬렉션 뷰를 갖는 것입니다. 하나뿐 아니라 다른 출처에서 가져 오는 것이 모두 수평으로 스크롤해야하고 다른 하나는 수직으로 스크롤해야합니다.하나의 ViewController에 두 개의 CollectionView를 어떻게 추가합니까?
이 방법을 프로그래밍 방식으로 구현하는 방법에 대해 조언 해주십시오.
최종 결과는 하나의보기 컨트롤러에 2 개의 컬렉션 뷰를 갖는 것입니다. 하나뿐 아니라 다른 출처에서 가져 오는 것이 모두 수평으로 스크롤해야하고 다른 하나는 수직으로 스크롤해야합니다.하나의 ViewController에 두 개의 CollectionView를 어떻게 추가합니까?
이 방법을 프로그래밍 방식으로 구현하는 방법에 대해 조언 해주십시오.
이전에 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 중 하나를 호출 한 경우 이는 의심 스러울 수 있으므로 논리적으로 이름을 지정해야합니다.
'if (collectionView == collection1)'을'if ([collectionView isEqual : collection1])'로 변경하여 평등성을 테스트 할 수 있습니다. –
아니요, == 올바른지 (두 포인터가 같은 것을 가리키고 있는지 테스트하고 있음) – HughHughTeotl