2017-08-16 1 views
0

J'ai une vue de collection. Je veux que chaque cellule prenne une ligne par programme. Voici ce que j'ai fait jusqu'à présent:Une cellule pour une ligne dans la cellule de collection 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! 

} 

Une idée de quoi faire ensuite? enter image description here

Répondre

0

En supposant que vous voulez que chaque cellule pour prendre toute la largeur de la vue:

La meilleure façon de le faire, puisque vous avez déjà configuré le délégué du CollectionView au parentViewController, est de mettre en œuvre les éléments suivants fonction: func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize et lui faire retourner une taille avec self.view.bound.width comme largeur.

Cette fonction fait partie du UICollectionViewDelegateFlowLayout, et la seule condition requise pour que cela fonctionne est la classe implémentant cette fonction est le délégué de collectionView.

+0

Je n'arrive pas à trouver la fonction que vous avez mentionnée. J'ai essayé de l'écrire comme suit: mais je me coutume appelé du tout: func CollectionView (_ CollectionView: UICollectionView, mise en page collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: indexPath) -> CGSize { let size = CGSize (largeur: UIScreen .main.bounds.width, height: 10) taille de retour; } –

+0

Le viewcontroller contenant cette fonction met-il en œuvre le protocole 'UICollectionViewDelegateFlowLayout'? Et si oui, l'avez-vous défini en tant que délégué pour la collectionView? – Houwert