59 votes

Cellules prototypes dans une plume au lieu d'un storyboard

Pour une meilleure réutilisation, je veux créer une vue de table en dehors de mon Storyboard.

Maintenant, lorsque je crée un UITableView basé sur ViewController avec Nib dans Xcode, j'obtiens le TableView par défaut dans le fichier nib. Cependant, je ne suis pas capable dans Interface Builder d'ajouter des cellules prototypes comme je le fais dans mon Storyboard.

Est-il actuellement impossible d'ajouter des cellules prototypes dans une plume ou est-ce que je manque quelque chose ?

Merci beaucoup pour toute aide.

1 votes

En plus de la réponse correcte ci-dessus, je me référerais à la solution très détaillée pour ce cas. - Lien vers StackAnswer (en utilisant UITableView: registerNib:forCellReuseIdentifier: y tableView:cellForRowAtIndexPath: con .xib fichiers)

0 votes

Cette question/réponse est un peu confuse pour moi. Je suis venu ici pour trouver un moyen d'utiliser des cellules prototypes dans une vue tableau lors de la définition d'une vue tableau dans un xib. C'est parfaitement possible dans un storyboard, mais dans un xib, cette fonctionnalité n'existe pas.

92voto

Richard Venable Points 2121

IOS 5 inclut une nouvelle méthode sur UITableView : registerNib:forCellReuseIdentifier :

Pour l'utiliser, placez un UITableViewCell dans une nib. Ce doit être le seul objet racine de la nib.

Vous pouvez enregistrer la plume après avoir chargé votre tableView, puis lorsque vous appelez dequeueReusableCellWithIdentifier : avec l'identifiant de la cellule, il sera extrait de la plume, tout comme si vous aviez utilisé un prototype de cellule Storyboard.

1 votes

Fantastique - Je me demandais justement comment faire, j'ai cherché ici, j'ai vu votre réponse, puis j'ai vu que la mienne (qui s'avère être fausse !) était la réponse acceptée. Besi, tu devrais accepter celle-ci à la place.

0 votes

@jrturton Merci pour l'info.

2 votes

Existe-t-il un moyen de définir le propriétaire du fichier de ces cellules comme étant le contrôleur à partir duquel elles sont enregistrées ?

7voto

Naishta Points 5026

Dans Swift 4 :

  1. Créer une nouvelle classe CocoaTouch, sous-classe de UITableViewCell.

  2. Important - Activez la case à cocher Créer également un fichier XIB qui crée un fichier Swift et un fichier .xib

  3. Ajoutez des étiquettes dans le Xib, comme vous le feriez pour une cellule prototype dans Storyboard.

  4. Connecter les points de vente d'étiquettes au nouveau fichier swift

  5. Important - Registre le fichier nib dans viewDidLoad

    yourTableview.register(UINib.init(nibName: "CustomCellTableViewCell", bundle: nil), forCellReuseIdentifier: "Cell")

    (ou)

    yourTableview.register(UINib(nibName: "CustomCellTableViewCell", bundle: Bundle.main), forCellReuseIdentifier: "Cell")
  6. Implémentez la source de données et les délégués comme d'habitude et collez le type à la CustomCell dans cellForRowAtIndexPath.

2voto

skywinder Points 1035

En plus de la réponse correcte ci-dessus, je me référerais à la grande solution détaillée pour ce cas.

(en utilisant UITableView: registerNib:forCellReuseIdentifier: y tableView:cellForRowAtIndexPath: con .xib fichiers)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X