Dies ist möglich, müssen Sie nur jede UICollectionView als Unteransicht hinzufügen und den Delegaten und die dataSource für Ihren UIViewController festlegen.
Hier ist ein kurzes Beispiel. Angenommen, Sie sind ein UICollectionView Arbeits haben, sollten Sie diesen Code auf Ihre eigenen Anwendungen anpassen können eine zweite ziemlich leicht hinzuzufügen:
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)
}
Im cellForItemAtIndexPath Delegatfunktion:
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
}
}
In der numberOfItemsInSection Funktion :
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
}
Ich bekomme diesen Fehler "UICollectionView muss mit einem non-nil-Layout-Parameter initialisiert werden" in dieser Zeile "lass collectionViewA = UICollectionView()" – dennis
es funktioniert nicht für mich! Ich habe diesen Fehler erhalten: *** Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: 'UICollectionView muss mit einem Nicht-Null-Layout-Parameter initialisiert werden' –