2017-08-16 2 views
0

Ich habe eine Sammlungsansicht. Ich möchte, dass jede Zelle programmatisch eine Zeile aufruft. Hier ist, was ich bis jetzt getan habe:Eine Zelle für eine Zeile in der Sammelzelle swift?

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return self.challenges.count 
    } 

    // make a cell for each cell index path 
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

     // get a reference to our storyboard cell 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell 


     cell.myLabel.text = self.challenges[indexPath.item] 
     cell.backgroundColor = .orange 

     return cell 
    } 


    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 

     print("You selected cell #\(indexPath.item)!") 
    } 

} 



class MyCollectionViewCell: UICollectionViewCell { 

    @IBOutlet weak var myLabel: UILabel! 

} 

Haben Sie eine Idee, was als nächstes zu tun? enter image description here

Antwort

0

Vorausgesetzt, dass Sie jede Zelle wollen die ganze Breite der Ansicht zu übernehmen:

Der einfachste Weg, dies zu tun, da Sie bereits die Delegierten der Kollektion zum parent gesetzt ist, wird die folgenden implementieren Funktion: func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize und es eine Größe mit self.view.bound.width als Breite zurückgeben.

Diese Funktion ist Teil der UICollectionViewDelegateFlowLayout, und die einzige Voraussetzung, um es funktionieren zu lassen, ist die Klasse, die diese Funktion implementiert, ist der CollectView-Delegat.

+0

Ich kann die von Ihnen erwähnte Funktion nicht finden. Ich habe versucht, es wie folgt zu schreiben: aber ich wird nicht überhaupt aufgerufen: func Kollektion (_ Collection: UICollectionView, Layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let size = CGSize (Breite: UIScreen .main.bounds.width, height: 10) return size; } –

+0

Ist der Viewcontroller, der die Funktion enthält, die das Protokoll 'UICollectionViewDelegateFlowLayout' implementiert? Und wenn ja, haben Sie es als Delegat für das CollectionView festgelegt? – Houwert

Verwandte Themen