Je viens de créer une application et j'ai commencé à connecter @ IBOutlet au storyboard. Je connecte certains d'entre eux à des étiquettes dans une cellule prototype UITableViewCell avec un style de base. Lorsque je le connecte, j'obtiens cette erreur dans le Storyboard:
La sortie detailText entre TableViewController et UILabel n'est pas valide. Les prises ne peuvent pas être connectées à du contenu répétitif.
Est-ce que quelqu'un peut m'aider? Je l'ai configuré comme je le fais toujours avec succès, mais cette fois, cette erreur m'a jeté.
ios
storyboard
Tomblasta
la source
la source
Réponses:
Créez une sous-classe de cellule de vue tableau et définissez-la comme classe du prototype. Ajoutez les prises à cette classe et connectez-les. Désormais, lorsque vous configurez la cellule, vous pouvez accéder aux prises.
la source
Il existe deux types de cellules de vue de tableau qui vous sont fournies via le storyboard, ce sont des prototypes dynamiques et des cellules statiques.
1. Prototypes dynamiques
A partir du nom, ce type de cellule est généré dynamiquement. Ils sont contrôlés par votre code, pas par le storyboard. Avec l'aide du délégué de la vue tableau et de la source de données, vous pouvez spécifier le nombre de cellules, les hauteurs de cellules, le prototype de cellules par programme.
Lorsque vous faites glisser une cellule vers votre vue de tableau, vous déclarez un prototype de cellules. Vous pouvez ensuite créer n'importe quelle quantité de cellules sur la base de ce prototype et les ajouter à la vue de tableau via la
cellForRow
méthode, par programme. L'avantage est que vous n'avez besoin de définir qu'un seul prototype au lieu de créer chaque cellule avec toutes les vues ajoutées par vous-même (voir cellule statique).Donc, dans ce cas, vous ne pouvez pas connecter les éléments d'interface utilisateur du prototype de cellule à votre contrôleur de vue. Vous n'aurez qu'un seul objet contrôleur de vue lancé, mais plusieurs objets de cellule peuvent être lancés et ajoutés à votre vue de table. Il est inutile de connecter le prototype de cellule au contrôleur de vue car vous ne pouvez pas contrôler plusieurs cellules avec une seule connexion de contrôleur de vue. Et vous obtiendrez une erreur si vous le faites.
Pour résoudre ce problème, vous devez connecter votre étiquette prototype à un
UITableViewCell
objet. AUITableViewCell
est également un prototype de cellules et vous pouvez initier autant d'objets de cellule que vous le souhaitez, chacun d'eux est ensuite connecté à une vue générée à partir de votre prototype de cellule de table de scénario.Enfin, dans votre
cellForRow
méthode, créez la cellule personnalisée à partir de laUITableViewCell
classe et faites des choses amusantes avec l'étiquette2. Cellules statiques
D'autre part, les cellules statiques sont en effet configurées via le storyboard. Vous devez faire glisser les éléments de l'interface utilisateur vers chaque cellule pour les créer. Vous contrôlerez le nombre de cellules, les hauteurs, etc. à partir du storyboard. Dans ce cas, vous verrez une vue de table qui est exactement la même que celle de votre téléphone par rapport à ce que vous avez créé à partir du storyboard. Les cellules statiques sont plus souvent utilisées pour la mise en page, que les cellules ne changent pas beaucoup.
Pour contrôler les éléments de l'interface utilisateur d'une cellule statique, vous devrez en effet les connecter directement à votre contrôleur de vue, et les paramétrer.
la source
+100
Si vous utilisez une vue de tableau pour afficher les paramètres et d'autres options (comme le fait l'application Paramètres intégrée), vous pouvez définir le contenu de votre vue de tableau sur des cellules statiques sous l'inspecteur d'attributs . Pour ce faire, vous devez également incorporer votre vue Table dans une instance UITableViewController.
la source
Ou vous n'avez pas besoin d'utiliser IBOutlet pour faire référence à l'objet dans la vue. Vous pouvez attribuer au Label dans la tableViewCell une valeur de Tag, par exemple définir le Tag sur 123 (cela peut être fait par l'inspecteur d'attributs). Ensuite, vous pouvez accéder à l'étiquette en
la source
Avec moi, j'ai un
UIViewcontroller
, et j'y ai un tableau avec une cellule personnalisée. Je mappe ma sortie d'UILabel surUItableviewcell
leUIViewController
puis j'ai l'erreur.la source
Comme la plupart des gens l'ont souligné, le sous - classement
UITableViewCell
résout ce problème. Mais la raison pour laquelle cela n'est pas autorisé, car la cellule prototype ( UITableViewCell ) est définie par Apple et vous ne pouvez pas y ajouter vos propres prises.la source
Parfois, Xcode ne pouvait pas contrôler correctement la connexion de la sortie de la cellule.
D'une manière ou d'une autre, l'étiquette / le bouton de ma cellule actuelle a connecté une autre cellule, je les supprime simplement et l'erreur disparaît.
la source
Cliquez sur le simulateur, accédez à la fenêtre et activez les cadres de l'appareil
la source