web-dev-qa-db-fra.com

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, quand je crée un ViewController basé sur UITableView avec Nib dans Xcode, j'obtiens le TableView par défaut dans le fichier nib. Cependant, je ne suis pas en mesure dans Interface Builder d'ajouter des cellules prototypes comme je le suis dans mon Storyboard.

N'est-il pas actuellement possible d'ajouter des cellules prototypes dans une plume ou est-ce que je manque quelque chose.

Merci beaucoup pour toute aide.

56
Besi

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

Pour l'utiliser, mettez un UITableViewCell dans une pointe. Ce doit être le seul objet racine dans la plume.

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

91
Richard Venable

Dans Swift 4:

  1. Créez une nouvelle classe CocoaTouch, sous-classe à partir de UITableViewCell.
  2. Important - Cochez la case 'Créer également un fichier XIB' qui crée un Swift et un fichier .xib
  3. Ajoutez des étiquettes dans le Xib, comme vous le feriez pour une cellule prototype dans Storyboard
  4. Connectez les points de vente d'étiquettes au nouveau fichier Swift
  5. Important - Register 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 délègue en tant que normal et typecaste à CustomCell dans cellForRowAtIndexPath.
5
Naishta