Ce bogue me rend fou depuis que j'ai commencé à utiliser Xcode (4.6.3). Chaque fois que j'essaie de lier un élément de Storyboard à mon code, j'obtiens le message d'erreur suivant:
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:
Je ne peux pas ctrl-glisser 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-glisser, je peux établir une connexion, mais je ne peux pas l'ajouter automatiquement. Rien de ce que j'ai pu trouver jusqu'ici sur Internet n'a aidé. Des pointeurs?
Ce qui a résolu le problème pour moi, c’est la suppression de la classe du projet.
Pas:
Cela semble forcer Xcode à relier la classe au storyboard.
Note: pour moi ce qui suit n'a pas pas travail:
Je pense que c'est un bug de la part d'Apple
Si quelqu'un est toujours frustré par cette situation, il existe un truc pour que les choses fonctionnent.
Ce que je fais est d’entrer manuellement un point de vente dans ma classe, par exemple: @IBOutlet weak var someView: UIView!
et de faire glisser du code vers la vue dans IB ou dans le storyboard. Après cela, je suis capable de faire glisser de IB/Storyboard vers ma classe pour établir des connexions, les éditeurs adjoints reconnaissent la classe dans "Automatique", etc.
Fonctionne à chaque fois.
Parfois, Xcode, en raison de VC, ne fait pas référence au fichier de classe. La solution simple pour cela est:
écrire la propriété manuellement comme donné.
class YourClassName{
@IBOutlet weak var YourTableName: UITableView!
}
Cela fera un signe de lien vide avant @IBOutlet, ouvrez votre projet dans l’éditeur d’assistant puis cliquez sur le signe de lien et faites glisser dans la vue à laquelle vous souhaitez vous connecter (je me suis connecté avec TableView). et c'est tout. Profitez de codage heureux !!!
les étapes suivantes fonctionnent pour moi j'espère que cela fonctionne pour vous aussi
1- Vous devez rouvrir votre projet après la fermeture de Xcode.
2- Attendre l'indexation des fichiers du projet
3- Vérifiez si cela fonctionne ou pas
4- Si cela ne fonctionne toujours pas, suivez l’étape 5, sinon content pour vous :)
5- Nettoyer et construire votre cible de projet
Je viens d'avoir ce problème en avril 2017 avec Xcode 8
Il suffit de créer un point de vente via le code et de le compiler pour le corriger. par exemple:
@IBOutlet weak var containerViewHeight: NSLayoutConstraint!
Tu dois aimer Xcode…
Edit: toujours en cours sur Xcode 9
J'ai tout essayé et cela n'a pas fonctionné. Ce qui a fonctionné pour moi, c'est:
Tous mes contrôleurs de vue n'étant pas reconnus, la suppression de tous les fichiers et leur ré-ajout n'étaient pas une option, car il s'agissait d'un grand projet.
Pour moi, ce qui suit a fonctionné:
Effectuez un nettoyage et un dossier de construction propre (appuyez sur l'option dans le menu Produit pour obtenir la commande du dossier de construction
Arrêtez Xcode
Dans terminal, accédez au dossier de données dérivé:
(/ Users // Library/Developer/Xcode/DerivedData)
Supprimez le répertoire de données dérivé de votre projet.
Agiter poulet mort dans l'air
Démarrer Xcode
Au lieu de faire glisser la connexion du bouton au code, ce qui a fonctionné pour moi a été:
après avoir lié mon code de cette manière, il a normalement fonctionné par la suite.
Jusqu'à présent, je devais combiner quelques réponses:
(Cliquez sur le bouton jaune en haut à gauche du contrôleur de vue dans le storyboard -> accédez à 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)
(Cliquez avec le bouton droit sur le dossier dans lequel se trouvait le fichier -> "Ajouter un fichier à [projet]")
Si les gens essayent ce qui précède et que les choses ne fonctionnent toujours pas, le truc étrange qui a fonctionné pour moi a été d’ajouter le point de vente dans un espace vide. Cela fonctionne s'il n'y a pas d'autres lignes directement au-dessus ou au-dessous de la ligne que vous ajoutez. Etrange, mais ça a marché!
Produit> Clean (Command - Shift - K) corrigé pour moi!
Cela a fonctionné pour moi:
En passant, je ne sais pas si cela a aidé, mais j'ai également supprimé les Données dérivées avant de suivre les étapes ci-dessus (Préférences Xcode> Emplacements).
C'est l'étape la plus facile que j'ai faite pour résoudre ce problème.
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 et à voir si l'une de ces choses avait changé.
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 déclenche un réindexation dans Xcode. Mais si vous vous dirigez vers la mauvaise cible, l'indexation n'aura probablement aucun sens et lors du glissement de connexion, Xcode ne pourra pas trouver votre classe.
En bref
Étape 1.
Assurez-vous que le jeu de cibles correct est défini afin que l'indexation ait un sens.
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 ce problème 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
Juste besoin de nettoyer et de reconstruire le projet.
Selon mon expérience de test, si vous supprimez une classe associée au Xcode et que vous rajoutez un fichier, ce problème se produira.
Habituellement, lorsque cela m'arrive, je n'ai tout simplement pas encore enregistré le code pour la classe. Il suffit de sauter dans le code et d'appuyer sur cmd + s, ce qui corrige souvent le problème.
Aucune des étapes ci-dessus n'a fonctionné pour moi, mais je pense avoir découvert le problème. Au moins c'est ce qui a fonctionné pour moi, et ce n'est pas un bug dans Xcode.
Dans l’éditeur d’assistant, regardez en haut de la fenêtre le code de votre viewController. La troisième option à partir de la droite dit probablement "Manuel", mais elle devrait dire "Automatique". Une fois que j'ai changé cela, le problème a été résolu!
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 de ne pas faire glisser l'élément depuis l'interface vers interface -, assurez-vous qu'il est également déplacé vers la classe elle-même.
Sélectionnez ViewController dans storyBoard, supprimez la valeur actuelle dans Panneau de droite / "Classe client"/"classe" puis rajoutez la classe de contrôle (type: "SampleViewController" ...), entrez .-- > Ça marche pour moi
Pour moi, la vue pour laquelle j'avais spécifié une classe personnalisée échouait à être compilée par le constructeur d'interface. Il était marqué @IBDesignable
.
Supprimer @IBDesignable
, puis ajouter mes points de vente, puis le marquer comme @IBDesignable
a résolu le problème dans mon cas.
Dans mon cas, c'était parce que le processus d'indexation Xcode s'était arrêté. Le redémarrage de mon Mac a corrigé le problème.
J'ai tout essayé!
Assurez-vous que le nom de classe de votre UIViewController ne contient pas le mot "Test"
Rapport de bogue soumis.
Je voudrais essayer de refaire les fichiers .m et .h en question et leur donner un nom original, pas générique comme "ViewController". Essayez quelque chose de plus similaire à ce que vous voulez que ce fichier fasse, et se terminant dans View Controller (c'est-à-dire "PizzaDecoraterViewController")
Sélectionnez ensuite le ViewController que vous souhaitez connecter à ces fichiers. Assurez-vous de sélectionner le ViewController et pas seulement un objet à l'intérieur. Cliquez sur la barre noire en bas (celle qui comporte les icônes "Premier répondant" et "Quitter"). Le ViewController entier doit décrire le bleu. Ensuite, allez à la section Classe personnalisée de 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 vous connecter (commencez à taper PizzaDecorator ... et il devrait faire un peu de travail auto-complet). Puis appuyez sur ENTER.
Lorsque vous ouvrez l'Assistant éditeur, assurez-vous que le fichier que vous essayez de glisser-déposer est bien le bon fichier.
Si vous avez tout fait comme indiqué ci-dessus, alors cela devrait fonctionner.
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 n'a pas complété automatiquement les méthodes, mais je l'ai écrit manuellement), puis j'ai ajouté les IBOutlets, puis j'ai finalement supprimé la source de données.
Exemple:
class TestViewController:UIViewController{
// This viewController presents “Could not find any information for class named ViewController”
}
extension TestViewController:UITableViewDataSource{
//Add Some methods of the protocol, Xcode will try to autocomplete and then it's going to reload the class, from then you can add your IBOulets / Actions .. And remove this extension if you don't need it otherwise.
}
Ok les gars ont vu presque toutes les réponses et aucune n'a fonctionné pour moi.
Donc, ce qui a fonctionné pour moi est le suivant:
Derived Data
à partir de votre projet Xcode . Pour cela, procédez comme suit: Xcode -> Preferences -> Location Tab -> Derived Data
Close Xcode
Maintenant, allez à l’emplacement des données dérivées et supprimez le dossier de votre projet.
Maintenant, ouvrez Xcode et le tour est joué!
Essayez simplement de supprimer les données dérivées pour le projet
Accédez au dossier du projet et supprimez le dossier de données dérivées.
si vous ne pouvez pas trouver les données dérivées, allez au Finder et allez à
~/Library/Developer/XCode/DerivedData/"project"
(remplacez le nom "projet" par le nom du projet)
Comme je l'ai commenté sur la réponse de @ ChrisHarrison, cela n'a pas fonctionné pour moi, mais la suppression des données dérivées comme précédemment l'a été en supprimant les données dérivées comme suit https://stackoverflow.com/a/16182672/1449799
Dans mon cas, j'avais le même nom de classe et xcode ne pouvait pas reconnaître celui que je ciblais, alors soyez prudent dans la sélection du nom de vos classes.
Vérifiez à partir du Finder Xcode s'il est fermé ou non.
Forcer quitter Xcode et redémarrer.
Produit> Clean
Supprimez les fichiers (uniquement les références) et ajoutez-les à nouveau.
Je sais que, dans la plupart des cas, il ne s'agit que d'actionner Xcode, mais dans mon cas, aucune des actions suggérées n'a réussi à résoudre le problème et je pense que c'est une erreur que j'ai commise lorsque j'ai tenté de renommer mon projet. J'ai donc créé un nouveau projet. et tout importer.
Cela a finalement résolu le problème.
Je viens de redémarrer Xcode et ensuite cela fonctionne.
juste essayer ceci
rm -rf ~/Library/Caches/com.Apple.dt.Xcode
defaults delete com.Apple.dt.Xcode IDEIndexDisable
defaults write com.Apple.dt.Xcode IDEIndexEnable 1