To jest możliwe, wystarczy dodać każdy UICollectionView jako widok podrzędny i ustawić delegata i źródło danych do swojego UIViewController.
Oto krótki przykład. Zakładając, że masz jedną pracę UICollectionView, powinieneś być w stanie dostosować kod do własnych zastosowań, aby dodać drugi dość łatwo:
let collectionViewA = UICollectionView()
let collectionViewB = UICollectionView()
let collectionViewAIdentifier = "CollectionViewACell"
let collectionViewBIdentifier = "CollectionViewBCell"
override func viewDidLoad() {
// Initialize the collection views, set the desired frames
collectionViewA.delegate = self
collectionViewB.delegate = self
collectionViewA.dataSource = self
collectionViewB.dataSource = self
self.view.addSubview(collectionViewA)
self.view.addSubview(collectionViewB)
}
W funkcji cellForItemAtIndexPath Delegat:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if collectionView == self.collectionViewA {
let cellA = collectionView.dequeueReusableCellWithReuseIdentifier(collectionViewAIdentifier) as UICollectionViewCell
// Set up cell
return cellA
}
else {
let cellB = collectionView.dequeueReusableCellWithReuseIdentifier(collectionViewBIdentifier) as UICollectionViewCell
// ...Set up cell
return cellB
}
}
w funkcji numberOfItemsInSection :
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if collectionView == self.collectionViewA {
return 0 // Replace with count of your data for collectionViewA
}
return 0 // Replace with count of your data for collectionViewB
}
Otrzymuję ten błąd "UICollectionView musi zostać zainicjowany z niezerowym parametrem układu" w tym wierszu "niech collectionViewA = UICollectionView()" – dennis
to nie działa dla mnie! Mam ten błąd: *** Kończenie aplikacji ze względu na nieprzechwycony wyjątek "NSInvalidArgumentException", powód: "UICollectionView musi być zainicjowany z niezerowym parametrem układu" –