0

Ich habe ein Problem. Ich verwende eine UICollectionView, um zwei (sie werden mehr) Arrays von Bildern anzuzeigen, und jedes Array hat seinen eigenen Abschnitt. Ich möchte so etwas wie erreichen:Stack UICollectionView Abschnitte

----------------------- 
Section 1: Elements in array no. 1 
----------------------- 
Section 2: Elements in array no. 2 
----------------------- 

Aber ab jetzt bekomme ich so etwas wie

----------------------- 
Section 1: Elements in array no. 1 | Elements in array no. 2 
----------------------- 

Wie kann ich die UICollectionView sagen die beiden Abschnitte zu stapeln? Ich dachte darüber nach, die Sammelansicht, die ich jetzt habe, in die Zelle einer anderen Sammelansicht einzufügen, aber ich habe keine Ahnung, wie ich das machen soll. Eine andere Lösung könnte sein, sie in die Zelle einer Tabellenansicht zu stellen, aber es ist am besten, wenn ich diese Umgehungslösungen vermeiden kann.

Ich bin nicht sicher, wie man es benutzt, aber ich denke, das Erstellen eines benutzerdefinierten Layouts kann funktionieren, auch wenn ich Hilfe brauche.

Außerdem wurde ich gebeten, keine externe Bibliothek zu verwenden.

BTW Ich programmiere in Objective-C.

+0

http://stackoverflow.com/questions/20910105/uicollectionview-with-section-headers-like-a-uitableview – Wain

+0

Dank aber das ist nicht ganz das, was ich suchte – DarthGalm

Antwort

0

können Sie mehr Abschnitt machen, indem Sie einfach die Umsetzung UICollectionViewDataSource Methode numberOfSectionsInCollectionView

class ViewController: UIViewController, UICollectionViewDataSource,UICollectionViewDelegateFlowLayout { 

    let HEADER_IDENTIFIER = "header_identifier" 
    let CELL_IDENTIFIER = "cell_identifier" 
    lazy var collectionView:UICollectionView = { 

     var cv = UICollectionView(frame: self.view.bounds, collectionViewLayout: self.flowLayout) 
     cv.delegate = self 
     cv.dataSource = self 
     cv.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: self.CELL_IDENTIFIER) 
     cv.registerClass(UICollectionReusableView.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: self.HEADER_IDENTIFIER) 
     cv.backgroundColor = UIColor(red: 230/255, green: 230/255, blue: 230/255, alpha: 1) 
     return cv 
    }() 

    lazy var flowLayout:UICollectionViewFlowLayout = { 
     var flow = UICollectionViewFlowLayout() 
     flow.sectionInset = UIEdgeInsetsMake(2.0, 2.0, 2.0, 2.0) 
     return flow 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.view.addSubview(self.collectionView) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: UICollectionView 
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier(CELL_IDENTIFIER, forIndexPath: indexPath) 
     cell.backgroundColor = UIColor.blueColor() 
     return cell 
    } 

    func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView { 
     let header = collectionView.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionHeader, withReuseIdentifier: HEADER_IDENTIFIER, forIndexPath: indexPath) 
     header.backgroundColor = UIColor.redColor() 
     return header 
    } 

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 3 
    } 

    func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
     return 2 
    } 

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
     return CGSize(width: 90, height: 90) // The size of one cell 
    } 

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { 
     return CGSizeMake(self.view.frame.width, 1) // Header size 
    } 
} 
+0

Und ich tat das. Mein Problem ist, dass die 2 Abschnitte nicht stapeln, stattdessen sie Linie. – DarthGalm

+0

Welches Layout verwenden Sie? Verwenden Sie Flowlayout? Können Sie die Verbindungen von Delegierten mit Ihrer Sammelansicht überprüfen? –

+0

Ja, ich verwende Flowlayout, aber ich habe kein Problem, zu einem benutzerdefinierten Layout zu wechseln, ich bin nur ein Neuling. Entschuldigung, ich habe es in meiner Frage nicht klar gemacht, ich verwende objective-c. Also, was meinst du mit Verbindungen von Delegierten? – DarthGalm