2017-07-16 3 views
0

Ich versuche, das folgende Bild mithilfe der UICollectionViewCell zu erreichen. Sample ImageWie zwei verschiedene Zellen in UICollectionView in swift3 angezeigt werden

aber ich habe drei verschiedene Fälle dafür bekommt: A) Eine besondere Art der Reise nur Weiterreise sichtbar ist. B) Eine bestimmte Art der Reise, sowohl Hin- als auch Rückreise, ist sichtbar (wie in der folgenden Abbildung gezeigt). C) Eine bestimmte Art von Reise hat 2 Weiterreise und 2 Rückreisezeit.

Also ich versuche, die Sammlungsansicht dafür zu verwenden. Bin ich richtig bei der Vorgehensweise und wie erreiche ich diese Logik mithilfe der Sammlungsansicht?

Antwort

3

Ich würde wahrscheinlich meine UICollectionViewCell Unterklasse, definieren alle erforderlichen Layout-Typen enums und übergeben Sie es in meinem CellForItemAtIndexPath als Parameter in einer benutzerdefinierten Methode, so dass die benutzerdefinierte Sammlung View-Zelle selbst zu planen.

Etwas wie folgt aus:

enum MyLayoutType 
{ 
    case layoutA 
    case layoutB 
    case layoutC 
} 

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource 
{ 
    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() 
    { 
     super.didReceiveMemoryWarning() 
    } 

// MARK: Collection View DataSource 

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

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

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCustomCVCell", for: indexPath) as! MyCustomCVCell 

     // Decide here what layout type you would like to set 

     cell.setUpWithType(layoutType: .layoutA) 
     return cell 
    } 
} 

Und dann, in der benutzerdefinierten Sammlung Ansicht Zelle Unterklasse (vergessen Sie nicht die benutzerdefinierte Klasse in Ihrer Interface Builder-Datei zuweisen):

class MyCustomCVCell: UICollectionViewCell 
{ 
    func setUpWithType(layoutType: MyLayoutType) 
    { 
     switch layoutType 
     { 
     case .layoutA: 
      self.backgroundColor = .red 
     case .layoutB: 
      self.backgroundColor = .yellow 
     case .layoutC: 
      self.backgroundColor = .blue 
     } 
    } 
} 
+0

könnten Sie posten Sie bitte einen Code oder ein Github-Projekt davon? –

+0

Ich habe meine Antwort bearbeitet und ein einfaches Beispiel hinzugefügt. –

Verwandte Themen