0

Suis un très novice à Swift et IOS. Je voudrais mettre en œuvre une vue comme ci-dessous et aussi rendre chaque section capable de balayer horizontalement. a prototype J'ai plusieurs questions de conception:Comment avoir plusieurs UICollectionView avec en-tête et le faire glisser horizontalement

  1. Si je un UICollectionView ou trois?
  2. Si je veux en outre ouvrir chaque section comme cliquez sur le "Petit déjeuner" pour aller à la pleine vue du petit-déjeuner, la réponse est-elle toujours la même pour la question 1?
  3. Pour l'en-tête, vaut-il mieux avoir une étiquette ou en faire un en-tête de section. Depuis je pense juste avoir une étiquette est beaucoup plus facile.
  4. Y at-il un exemple disponible sur swift pour cela? Sorte de sentir que c'est une norme normale.
+0

pouvez-vous faire défiler vers le haut et vers le bas pour voir la section différente? – jo3birdtalk

+0

Utilisez 'UITableViewCell' et à l'intérieur de cette cellule ajoutez' UICollectionView' avec scroll horizontal. Cela résoudra votre problème. –

Répondre

2
  1. Il peut être mis en œuvre de toute façon, mais je ne reviendrais probablement aller avec une vue de collection. Scindant en serait fait par les différentes sections que vous implémenteriez en utilisant la fonction

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

Ensuite, vous décideriez le nombre d'éléments dans chaque section avec:

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

Ensuite, vous définir le contenu de chaque cellule avec:

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) 

    // Configure the cell 

    return cell 
} 

Ensuite, vous passer à un nouveau viewcontroller quand ils choisi une cellule en utilisant

override func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool { 
     return true 
    } 

indexPath a indexPath.section et indexPath.row qui vous permettent d'accéder loccations exactes de chaque cellule en cas de besoin dans les fonctions. Vous aurez également besoin de configurer un delegate/datasource pour la collection pour le faire fonctionner et appeler collectionView.reloadData() chaque fois que le contenu des cellules est mis à jour sans quitter viewController. Utiliser un en-tête est plus facile qu'une étiquette si vous utilisez un seul collectionView avec 3 sections, et si vous utilisez 3 vues de table, utiliser une étiquette ou un en-tête est tout aussi compliqué, mais je ne le recommande pas. Et dernier ... link to collectionView tutorial

+0

Merci @Sethmr, c'est très utile et j'ai essayé le chemin et ça a bien fonctionné. Une autre préoccupation est que, est-il possible de faire défiler horizontalement chaque section et de faire défiler verticalement toute la collection? – DashengMa

+0

C'est possible, mais cela demanderait beaucoup plus de travail. Vous devez toujours être extrêmement prudent lorsque vous utilisez le défilement vertical et horizontal. Les priorités doivent être établies et je n'ai pas le temps de tout comprendre. Je voudrais lire attentivement la documentation sur ScrollViews et la vue Collection avant d'essayer de plonger dans tout cela. – Sethmr