9
votes

Swift - Impossible d'utiliser "registernib" sur ma tableView pour ajouter une cellule personnalisée

Je tiens à déterminer comment ajouter des cellules personnalisées à une vue de table à Swift. J'ai regardé beaucoup de tutoriels et ils disent tous à un moment d'utiliser quelque chose comme tableview.registernib qui ne fonctionne pas pour moi!

Ceci est le code que j'utilise dans ma catégorie TableViewController: xxx

Lorsque j'essaie de construire, j'ai une erreur sur la deuxième ligne qui dit:

Impossible d'invoquer "registernib" avec une liste d'arguments de type '(Uinib, ForcellruseIdentifier: String) '.

Que puis-je faire? Tous les tutoriels et autres réponses sur les cellules personnalisées utilisent ce code.

Merci d'avance


5 commentaires

Comment tableView déclarée? Notez que si tableview est facultatif, vous ne pouvez pas appeler une méthode directement, vous devez utiliser la notation TABLEVIEW ?.REGISTERNIB .


Ma tableView est déclarée sous forme de sortie: @iboutlet faible Var Varyview: Uitailview!


Il n'y a rien de mal avec votre code. Le seul problème que je peux imaginer, c'est que vous avez une faute de frappe et vous n'avez pas copié la faute de frappe ici correctement.


Comment tu as créé la cellule? Utiliser le code ou la nib?


Y a-t-il un moyen de reproduire votre problème?


6 Réponses :


5
votes

J'utilise le code suivant à l'intérieur TableView: Couvertfrofortordexpath CODE> Fonction:

var cell = tableView.dequeueReusableCellWithIdentifier("CustomCell") as UITableViewCell
if cell == nil {
    tableView.registerNib(UINib(nibName: "CustomCell", bundle: nil), forCellReuseIdentifier: "CustomCell")
    cell = tableView.dequeueReusableCellWithIdentifier("CustomCell") as UITableViewCell!
}

return cell


2 commentaires

Semble inutile d'enregistrer la pointe de la pointe et plus ici. Faites-le une fois, sur la charge.


J'ai deuxième @ auvoir. Enregistrement d'une cellule n'est qu'une exigence ponctuelle. Donc, ne nécessite pas d'être écrit dans CellfornorTindexpath: méthode.



2
votes

OK ... Je ne sais pas quel était le problème, mais supprimez la référence de fichier de mon cell.xib dans mon projet et l'ajoutez à nouveau simplement résolu le problème. J'ai déjà eu des problèmes résolus comme ça dans le passé.

Merci à tous pour vos réponses rapides!


0 commentaires

3
votes

Après que certains cogneurs, j'ai réalisé mon erreur:

au lieu de "ForcellreutifIdentifier", j'étais censé utiliser ForcellWhithRutIdentifier. Avec tant de choses changeant avec Swift, si rapidement, c'est difficile à suivre tous les changements. J'espère que cela aide.

solution qui a fonctionné pour moi: xxx


1 commentaires

Ca c'est drôle. Lorsque j'ai essayé d'utiliser "ForcellwithReuTusIdentifier", j'ai eu une erreur et j'ai dû le repasser sur "ForcellruseIdentifier", et non que l'un ou l'autre corrige le problème.



1
votes

Dans mon cas, la solution modifiait ceci: xxx

à ceci: xxx


0 commentaires

0
votes

Dans votre viewDidload Ajouter Ajouter les lignes suivantes:

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell_name", for: indexPath)as! cell_name


0 commentaires

1
votes

J'ai utilisé une fonction générique que j'ai appelée comme ceci. XXX PRE>

La classe générique a été utilisée à partir de Github, vous pouvez simplement utiliser la fonction suivante: P >

public func register<Resource: NibResourceType & ReuseIdentifierType>(_ nibResource: Resource)
    where Resource.ReusableType: UICollectionViewCell
  {
    register(UINib(resource: nibResource), forCellWithReuseIdentifier: nibResource.identifier)
  }


0 commentaires