Ce bug me rend fou depuis que j'ai commencé à utiliser Xcode (4.6.3). Chaque fois que j'essaye de lier un élément de Storyboard à mon code, j'obtiens l'erreur:
Impossible de trouver des informations pour la classe nommée ViewController.
Cela se produit également avec les classes personnalisées. J'ai essayé des méthodes telles que:
- Suppression des données du délégué.
- Suppression et réajout des classes.
- Redémarrage de Xcode.
- Réinstaller Xcode.
Je ne peux pas faire glisser la touche Ctrl pour créer des connexions dans aucun de mes projets, quelle que soit la classe. Le même problème se produit avec une toute nouvelle application de modèle. Si je tape le code manuellement, puis ctrl-drag, je peux établir une connexion fonctionnelle, mais je ne peux pas l'ajouter automatiquement. Rien de ce que j'ai pu trouver jusqu'à présent sur Internet n'a aidé. Des pointeurs?
NSLog()
toviewDidLoad:
Réponses:
Ce qui a résolu ce problème pour moi était en fait la suppression de la classe du projet.
Pas:
Cela semble forcer Xcode à relier la classe au storyboard.
Remarque: pour moi, ce qui suit n'a pas fonctionné:
Je pense que c'est un bug d'Apple
la source
Au cas où quelqu'un serait encore frustré par cela, il y a une astuce pour faire fonctionner les choses.
Ce que je fais, c'est entrer manuellement un point de vente dans ma classe, par exemple
@IBOutlet weak var someView: UIView!
:, et faire glisser du code vers la vue dans IB ou storyboard. Après cela, je suis capable de faire glisser de IB / Storyboard vers ma classe pour établir des connexions, les éditeurs assistants reconnaissent la classe en "Automatique", etc ...Fonctionne à chaque fois.
la source
Pour moi, les supprimer de votre adhésion cible dans la colonne de droite et les ajouter à nouveau a fait l'affaire
la source
Parfois, Xcode le fait parce que VC ne fait pas référence au fichier de classe. La solution simple pour cela est:
écrire la propriété manuellement comme indiqué.
Cela créera un signe de lien vide avant @IBOutlet , ouvrira votre projet dans l'éditeur assistant, puis cliquez sur le signe de lien et faites glisser dans la vue que vous souhaitez connecter (je me suis connecté avec TableView). et c'est tout. Profitez de Happy Coding !!!
la source
Je viens d'avoir ce problème en avril 2017 avec Xcode 8
Le simple fait de créer une prise via le code et de compiler le corrigeait. par exemple:
Vous devez aimer Xcode…
Edit: se passe toujours sur Xcode 9
la source
les étapes suivantes fonctionnent pour moi j'espère que cela fonctionne aussi pour vous
1- Vous devez rouvrir votre projet après avoir fermé Xcode.
2- Attendre l'indexation des fichiers du projet
3- Vérifiez si cela fonctionne ou non
4- Si cela ne fonctionne toujours pas, suivez l'étape 5, si ce n'est pas satisfait pour vous :)
5- Nettoyer et construire la cible de votre projet
la source
J'ai tout essayé et cela n'a pas fonctionné, donc pour moi, ce qui a fonctionné est:
Tous mes contrôleurs de vue n'étaient pas reconnus, donc supprimer tous les fichiers et les rajouter n'était pas une option car il s'agit d'un gros projet.
la source
Pour moi, ce qui suit a fonctionné:
Effectuez un 'nettoyage' et un 'dossier de construction propre' (appuyez sur 'option' dans le menu Produit pour obtenir la commande 'nettoyer le dossier de construction'
Arrêter Xcode
Dans le terminal, accédez au dossier des données dérivées:
(/ Utilisateurs // Bibliothèque / Développeur / Xcode / DerivedData)
Supprimez le répertoire de données dérivé de votre projet.
Agiter le poulet mort dans les airs
Démarrer Xcode
la source
J'ai dû faire une combinaison de quelques réponses jusqu'à présent:
(Cliquez sur le bouton jaune en haut à gauche du contrôleur de vue dans le storyboard -> allez dans l'inspecteur d'identité (option + commande + 3) -> supprimez le nom de la classe personnalisée en haut)
(Cliquez avec le bouton droit sur le fichier -> supprimer -> supprimer la référence)
(Faites un clic droit sur le dossier où se trouvait le fichier -> "Ajouter un fichier à [projet]")
la source
Si les gens essaient ce qui précède et que les choses ne fonctionnent toujours pas, l'étrange astuce qui a fonctionné pour moi a été d'ajouter le point de vente dans un espace blanc. Cela fonctionne s'il n'y a pas d'autres lignes directement au-dessus ou en dessous de la ligne que vous ajoutez. Étrange, mais ça a marché!
la source
Ce qui a fonctionné pour moi, c'est qu'au lieu de faire glisser la connexion du bouton vers le code, c'était:
après avoir lié mon code de cette manière, il a fonctionné normalement par la suite.
la source
Reste sur la cible!
J'ajoutais une nouvelle classe avec un Xib et j'ai commencé à voir ce problème et j'ai passé un bon moment à regarder les réponses ici et à voir si cela faisait une différence.
En l'occurrence, j'ai plusieurs cibles dans mon espace de travail et je dois souvent basculer entre elles.
Il s'avère que l'ajout de nouveaux fichiers lancera une réindexation dans Xcode. Mais si vous pointez sur la mauvaise cible, l'indexation n'aura probablement aucun sens et pendant le glissement pour connecter Xcode ne pourra pas trouver votre classe.
En bref
Étape 1.
Assurez-vous que vous avez défini la cible correcte pour que l'indexation ait du sens.
la source
Cela a fonctionné pour moi:
(appuyez et maintenez la touche 'option' et allez dans le menu " Product " pour y accéder.
Sur une note latérale, je ne suis pas sûr si cela a aidé, mais j'ai également supprimé les données dérivées avant d'effectuer les étapes ci-dessus (préférences Xcode> Emplacements)
la source
Sélectionnez le ViewController dans storyBoard, supprimez la valeur actuelle dans le panneau de droite / "Classe client" / "classe" puis rajoutez la classe de contrôle (type: "SampleViewController" ...), entrez. -> Cela fonctionne pour moi
la source
J'ai essayé toutes ces réponses, le problème pour moi était lié au fait que Xcode ne pouvait pas indexer les fichiers. J'ai résolu cela en quittant simplement Xcode et en rouvrant le projet. Bien sûr, je l'ai fait après avoir essayé toutes les solutions ci-dessus: p
la source
Produit> Clean (Command - Shift - K) l'a corrigé pour moi!
la source
C'est l'étape la PLUS FACILE que j'ai faite pour résoudre ce problème.
la source
D'après mon expérience de test, si vous supprimez une classe qui était associée dans le Xcode et que vous ajoutez à nouveau un fichier, ce problème se produira.
la source
Habituellement, lorsque cela m'arrive, je n'ai tout simplement pas encore enregistré le code de la classe. Passez simplement au code et appuyez sur cmd + s et cela résout souvent le problème de la bonne manière.
la source
Il suffit de nettoyer et de reconstruire le projet.
la source
Aucune des étapes ci-dessus n'a fonctionné pour moi, mais je pense que j'ai peut-être découvert le problème. Au moins, c'est ce qui a fonctionné pour moi, et ce n'est pas un bogue dans Xcode.
Dans l'éditeur assistant, regardez en haut de la fenêtre contenant le code de votre viewController. La troisième option à droite indique probablement «Manuel», mais elle devrait indiquer «Automatique». Une fois que j'ai changé cela, le problème a été résolu!
la source
J'avais un problème similaire, "Impossible de trouver une classe nommée ..." et la cause était stupide de ma part une fois que je l'ai compris. Assurez-vous que vous ne faites pas glisser de l'élément vers l' interface - assurez-vous qu'il est déplacé vers la classe elle-même
la source
J'ai tout essayé!
Assurez-vous que le nom de classe de votre UIViewController ne contient pas le mot "Test"
Rapport de bogue soumis.
la source
J'essaierais de refaire les fichiers .m et .h en question et de leur donner un nom original, pas générique comme "ViewController". Essayez quelque chose de plus dans le sens de ce que vous voulez que ce fichier fasse, et se terminant par View Controller (par exemple "PizzaDecoraterViewController")
Sélectionnez ensuite le ViewController que vous souhaitez connecter à ces fichiers. Assurez-vous que vous sélectionnez le ViewController, pas seulement un objet à l'intérieur. Cliquez sur la barre noire en bas (celle qui a les icônes «Premier répondant» et «Quitter»). L'ensemble ViewController doit être encadré en bleu. Ensuite, allez à la section Classe personnalisée dans l'inspecteur d'identité et vous devriez voir un "UIViewController" grisé dans le premier champ. Dans ce champ, tapez le nom du fichier .h ou .m auquel vous voulez qu'il se connecte (commencez à taper PizzaDecorator ... et il devrait faire une petite chose d'auto-complétion). Puis appuyez sur ENTER.
Lorsque vous ouvrez l'Assistant Editor, assurez-vous que le fichier sur lequel vous essayez de glisser-déposer est, en fait, le fichier correct.
Si vous avez tout fait comme indiqué ci-dessus, cela devrait fonctionner.
la source
Comme je l'ai commenté sur la réponse de @ ChrisHarrison, ces choses n'ont pas fonctionné pour moi, mais en supprimant les données dérivées comme je l'ai fait fonctionner en supprimant les données dérivées comme dans https://stackoverflow.com/a/16182672/1449799
la source
Supprimez les fichiers (uniquement les références) et ajoutez à nouveau les fichiers.
la source
Eh bien dans mon cas, la chose qui a fonctionné (c'est un peu bizarre, mais a fonctionné) est la suivante:
Essayez d'ajouter une source de données (par exemple, une extension au ViewController comme un UITableViewDataSource). Xcode essaiera de recharger le ViewController. Ensuite, j'ai écrit une méthode du protocole (au début, Xcode ne remplissait pas automatiquement les méthodes, mais l'écrivait manuellement), puis j'ai ajouté les IBOutlets, et enfin, j'ai supprimé la source de données.
Exemple:
la source
Pour moi, la vue pour laquelle j'avais spécifié une classe personnalisée ne parvenait pas à être compilée par le constructeur d'interface. C'était marqué
@IBDesignable
.La suppression
@IBDesignable
, puis l'ajout de mes prises, puis le marquage comme@IBDesignable
résolvant le problème dans mon cas.la source
Essayez simplement de supprimer les données dérivées du projet
la source
essayez juste ça
la source