Je souhaite utiliser un UITableview avec différentes tablesViewCells personnalisées. Mes 3 cellules sont ainsi:
- Cell1: doit avoir une image et une étiquette.
- Cell2: devrait avoir deux étiquettes.
- Cell3: devrait avoir un dayPicker.
Je ne veux pas coder une balise pour les cellules. Comment puis-je gérer cela dans Swift. Dois-je coder ma propre classe pour chaque cellule? Puis-je utiliser un tableviewController? Comment puis-je remplir des données dans différentes cellules?
Je souhaite générer une tableView, comme une application de contact d'un appareil iOS.
swift
uitableview
Easyglider
la source
la source
Réponses:
Permettez-moi de commencer par répondre à vos questions.
Dois-je coder une propre classe pour chaque cellule? => Oui, je le crois. Au moins, je ferais de cette façon.
Puis-je utiliser un tableviewController? => Oui, vous pouvez. Cependant, vous pouvez également avoir une vue de table dans votre contrôleur de vue.
Comment puis-je remplir des données dans différentes cellules? => Selon les conditions, vous pouvez renseigner les données dans différentes cellules. Par exemple, supposons que vous souhaitiez que vos deux premières lignes ressemblent au premier type de cellules. Donc, vous créez / réutilisez simplement le premier type de cellules et définissez ses données. Ce sera plus clair, quand je vous montrerai les captures d'écran, je suppose.
Permettez-moi de vous donner un exemple avec un TableView à l'intérieur d'un ViewController. Une fois que vous avez compris le concept principal, vous pouvez essayer de modifier comme vous le souhaitez.
Étape 1: Créez 3 TableViewCells personnalisées. Je l'ai nommé, FirstCustomTableViewCell, SecondCustomTableViewCell, ThirdCustomTableViewCell. Vous devriez utiliser des noms plus significatifs.
Étape 2: Allez dans Main.storyboard et faites glisser et déposez un TableView dans votre View Controller. Maintenant, sélectionnez la vue de table et accédez à l'inspecteur d'identité. Définissez "Prototype Cells" sur 3. Ici, vous venez de dire à votre TableView que vous pouvez avoir 3 types de cellules différents.
Étape 3: Maintenant, sélectionnez la 1ère cellule dans votre TableView et dans l'inspecteur d'identité, mettez «FirstCustomTableViewCell» dans le champ Classe personnalisée, puis définissez l'identificateur comme «firstCustomCell» dans l'inspecteur d'attributs.
Faites de même pour tous les autres: définissez leurs classes personnalisées sur respectivement "SecondCustomTableViewCell" et "ThirdCustomTableViewCell". Définissez également les identificateurs comme secondCustomCell et thirdCustomCell consécutivement.
Étape 4: Modifiez les classes de cellules personnalisées et ajoutez des prises en fonction de vos besoins. Je l'ai édité en fonction de votre question.
PS: Vous devez mettre les points de vente sous la définition de classe.
Ainsi, dans le FirstCustomTableViewCell.swift, sous le
vous mettriez votre étiquette et vos prises de vue d'image.
et dans SecondCustomTableViewCell.swift, ajoutez les deux étiquettes comme-
et le ThirdCustomTableViewCell.swift devrait ressembler à -
Étape 5: Dans votre ViewController, créez une prise pour votre TableView et définissez la connexion à partir du storyboard. En outre, vous devez ajouter UITableViewDelegate et UITableViewDataSource dans la définition de classe en tant que liste de protocoles. Donc, votre définition de classe devrait ressembler à -
Ensuite, attachez les UITableViewDelegate et UITableViewDatasource de votre vue de table à votre contrôleur. À ce stade, votre viewController.swift devrait ressembler à-
PS: Si vous aviez utilisé un TableViewController plutôt qu'un TableView dans un ViewController, vous auriez pu ignorer cette étape.
Étape 6: Faites glisser et déposez les vues d'image et les étiquettes dans votre cellule en fonction de la classe Cell. puis fournissez une connexion à leurs points de vente à partir du storyboard.
Étape 7: Maintenant, écrivez les méthodes requises de UITableViewDatasource dans le contrôleur de vue.
la source
Mise à jour Swift 3.0 + avec code minimum
Concept de base: créer une vue de tableau avec des prototypes de cellules dynamiques. Attribuez un identificateur et créez une classe de cellule de vue tableau personnalisée pour chaque prototype de cellule. Lancez et affichez des cellules personnalisées dans la méthode déléguée de la vue tableau.
1. Créez des cellules sur le storyboard
Faites glisser une tableView vers votre contrôleur de vue, ajoutez-y des cellules prototypes, puis déposez l'élément d'interface utilisateur dans vos cellules de vue de table, ajoutez correctement la contrainte si nécessaire.
2. Créez des
UITableViewCell
classes personnaliséesAjoutez le code suivant à votre projet. Je le mets juste au-dessus de la classe de contrôleur de vue.
3. Attribuer une classe et un identificateur personnalisés aux prototypes de cellule
Pour chacun des prototypes de cellule du storyboard, attribuez la classe personnalisée créée à partir de l'étape 2, puis entrez un identifiant unique.
4. Connectez les éléments de l'interface utilisateur au code Swift
Contrôle faites glisser la vue de table et connectez-vous à la classe de contrôleur de vue. Contrôle faites glisser les éléments d'interface utilisateur ajoutés aux prototypes de cellule à l'étape 1 et connectez-vous à la classe de cellule de vue tableau correspondante.
5. Ajoutez du code pour afficher le contrôleur et contrôler la vue de la table
Rendre votre contrôleur de vue conforme au délégué de vue de table
Dans
viewDidLoad
, configurez le délégué et la source de données de la vue tableau.Enfin, ajoutez deux méthodes de délégué pour contrôler votre vue de table, selon l'exigence minimale.
6. Essayez-le :)
la source
Les réponses ci-dessus sont les meilleures réponses, mais il y a des tonnes de raisons pour obtenir ce problème. Voici une autre solution potentielle pour toute personne ayant ce problème:
Mon problème était que je passais à la classe ViewController et non à la vue du storyboard. Ma référence à la cellule du storyboard n'avait donc aucun sens, puisque le storyboard n'était pas utilisé.
Je faisais ceci:
Et j'avais besoin de faire quelque chose comme ça:
J'espère que cela aide quelqu'un.
la source
UITableViewController
hériteUIViewController
qui a déjàUITableviewDataSource
&UITableviewDelegate
cartographiés sur lui - même.Vous pouvez sous-classer
UITableViewController
ou utiliser un à l'TableView
intérieur de votreViewController
. Après cela, vous devez implémenter les méthodes requises (cellForRowAtIndexPath
and numberOfRowsInSection
) qui sont déclarées dans leUITableviewDataSource
.Toujours dans le storyboard, vous devez créer des prototypes de cellules avec un identifiant unique.
Il existe des types de cellules de base, avec (titre, sous-titre par exemple) - vous pouvez également les utiliser si vous n'avez pas besoin de configuration spéciale.
Donc, pour le sélecteur, oui, vous devez créer votre propre cellule personnalisée. Créez le
UITableViewCell
sélecteur de date de conservation de classe personnalisé nécessaire et assurez-vous d'utiliser un délégué pour renvoyer le résultat souhaité à votreViewController
.la source