Impossible d'insérer une nouvelle connexion de sortie: impossible de trouver des informations pour la classe nommée

281

J'ai reçu une erreur sur Xcode disant qu'il n'y avait aucune information sur le contrôleur de vue.

Impossible d'insérer une nouvelle connexion de sortie: impossible de trouver des informations pour la classe nommée

Pourquoi cela arrive-t-il?

Capture d'écran 1

Ege Kaan Gürkan
la source
2
Je pense que cela a déjà été demandé: stackoverflow.com/questions/17735182/…
Tapani
J'ai simplement quitté Xcode, puis je l'ai rouvert. le compilateur va recharger tous les fichiers et il peut détecter le fichier que vous recherchez
Jane chicken
Vérifiez que vous n'avez pas encore de prise non connectée dans votre fichier de contrôleur de vue. J'ai découvert que je l'avais fait. Après l'avoir supprimé, je n'ai eu aucun problème.
Kex
Pour moi, aucune des solutions ci-dessus n'a fonctionné.J'ai dû supprimer le contrôleur de vue, que j'ai copié et collé à nouveau dans mon storyboard pour le réutiliser. Ensuite, j'ai fait glisser un nouveau contrôleur de vue dans le storyboard et tout s'est bien passé :). J'espère que cela pourrait aider quelqu'un avec le même problème.
Arslan Saleem
Il s'agit d'un BUG dans XCode, et je ne sais pas pourquoi ils ne le résolvent pas. Vous devez fermer XCode et le rouvrir. Lorsque vous essayez à nouveau de mettre les prises, mais cette fois, laissez un tas d'ENTREES avant de le faire. Vous n'avez rien à supprimer ou perdre votre temps sur d'autres options ... Cela résoudra vos problèmes.
mavesonzini

Réponses:

692

Voici certaines choses qui peuvent résoudre ce problème (par ordre croissant de difficulté):

  • Nettoyer le projet ( Produit> Nettoyer )
  • Collez manuellement

    @IBOutlet weak var viewName: UIView!
    // or
    @IBAction func viewTapped(_ sender: Any) { }
    

    et contrôlez le glisser. (Modifiez le type si nécessaire.) Voir également ceci .

  • Fermez complètement Xcode et redémarrez votre projet.

  • Supprimez le dossier Derived Data (Accédez à Xcode> Préférences > Emplacements et cliquez sur la flèche grise à côté du dossier Derived Data. Supprimez ensuite votre dossier de projet.)
  • Cliquez sur supprimer dans la classe, supprimez la référence (pas Déplacer vers la corbeille) et ajoutez-la à nouveau. (voir cette réponse )
Suragch
la source
n'oubliez pas de supprimer la classe sur le contrôleur de vue pour que ces étapes fonctionnent
reggie
8
Aucune de ces étapes n'a fonctionné pour moi dans Xcode 8.3.2. J'ai dû "Afficher l'inspecteur d'identité"> effacer le champ "Classe" (mettre en surbrillance le nom de la classe personnalisée et supprimer)> ressaisir le nom de la classe dans le champ "Classe". Xcode a complété automatiquement le nom de la classe. J'ai ensuite appuyé sur Entrée.
PeqNP
Ajoutez la ligne alias purgederiveddata='rm -rf ~/Library/Developer/Xcode/DerivedData/*'à votre ~ / .bashrc pour utiliser la commande purgederiveddatapour effacer avec une seule commande
eskimwier
J'ai trouvé un autre moyen de résoudre ce problème, cela m'est arrivé lorsque j'ai modifié certains paramètres de construction pour améliorer ma vitesse de construction. stackoverflow.com/a/50555888/2952876
Mathias Van Houtte
Je vous encourage fortement à essayer ma solution ci-dessous. Serait dégoûté de savoir que les gens doivent redémarrer leur ordinateur pour un bogue qui apparaît fréquemment.
Stephen Paul
134

Ou si aucun des éléments ci-dessus ne fonctionne, tapez d'abord le nom de la sortie dans le fichier @IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!, puis cliquez et faites glisser la sortie de la pointe vers la variable que vous venez de créer par programme. Il devrait fonctionner sans aucun tracas de nettoyage, de construction et de suppression de quoi que ce soit.

Stephen Paul
la source
4
souvent la solution la plus rapide au lieu de passer des années à nettoyer, construire, etc. merci.
mohonish
1
Très bien et une fois que vous faites cela, la boîte automatique commence à apparaître, merci.
AmJa
1
Tout d'abord, connectez votre objet XIB aux IBoutlets, puis essayez de connecter leurs contraintes IBOutlets. sans cela, il affichera toujours une erreur.
Chandramani
Cela peut également faire une différence lorsque vous essayez d'insérer la nouvelle prise. Pour, le haut de la liste (où il y a un espace libre au-dessus) a fonctionné; le milieu de la liste ne l'a pas fait.
Richard
1
Cela devrait être marqué comme la meilleure réponse. C'est plus simple, plus rapide et plus fiable. Ça marche aussi tout le temps! Bon travail et merci @StephenPaul
denis_lor
51

Effectuez simplement les deux étapes suivantes pour vous débarrasser de cette erreur

  1. Nettoyer le projet en utilisant Produit> nettoyer
  2. Exécutez le projet

Essayez maintenant d'ajouter l'action ou la sortie. C'est tout.

Happy Coding

Akshaykumar Maldhure
la source
4
Étrange ... ces deux étapes faciles ont aussi aidé à résoudre le problème pour moi. Donc, je recommande, pour essayer d'abord ces étapes faciles :-)
crosscode
49

Aucun des conseils de la meilleure réponse n'a fonctionné pour moi. Devenait fou. J'ai ensuite remarqué que l'Assistant Editor était en quelque sorte réglé sur Manuel et j'étais sur le ViewController.swift (Interface) au lieu du fichier ViewController.swift.

A changé cela et le problème a été résolu. Un peu gênant mais bon, on apprend tous.

entrez la description de l'image ici

Joshua Dance
la source
1
Réponse de Life Saver! Aucune des autres réponses ne l'a résolu une fois pour toutes. Dommage que la description de l'erreur ne donne pas le moindre indice que vous pourriez être dans le fichier wearg. Merci. +1 pour l'image, tout est clair.
Pauloco
J'ai remarqué quelque chose d'assez similaire, mais différent: dans le chemin en haut où le nom de la classe est affiché, il y avait juste le nom de la classe, mais le début du chemin manquait comme myProject> appName> controller puis la classe. J'ai sélectionné une autre classe, puis je suis revenue à la classe problématique, et tout est OK
claude31
15

Voici les étapes résolues pour moi:

  1. Supprimez la référence du nom de classe de la vue (storyboard / xib) et enregistrez;
  2. Ajoutez à nouveau le nom de classe et enregistrez;
  3. Nettoyer et construire;

Terminé !

Almeida
la source
10

J'ai eu le même problème. Je me suis fatigué des solutions ci-dessous mais je n'ai pas travaillé:

  1. Clean Project (cmd + shift + k) et même Clean Project Build (cmd + shift + alt + k)
  2. Deleted Derived data et Module Cache content

Ci-dessous solution de contournement à ce problème:

  1. Déplacer vers le fichier de code source et écrire IBOutlet / IBActionmanuellement (copier-coller préféré)

Capture d'écran 1

  1. Passez ensuite au fichier Storyboard et ouvrez la Utilitesfenêtre
  2. Aller à Connection Inspector
  3. Branchez ensuite le IBOutletet IBActionécrit dans le fichier source avec Interface Builder.

Capture d'écran 2

Jayprakash Dubey
la source
Faire glisser Outlets / Actions ne fonctionnait pas du tout, mais après l'avoir fait manuellement comme ça, tout fonctionnait à nouveau correctement.
Jason
Il s'agit d'une méthode alternative standard pour établir des connexions. Dans le cas des actions des boutons radio, la seule façon, AFAIK. Dans le storyboard, vous pouvez également cliquer avec le bouton droit sur le contrôleur, trouver la fonction et établir la connexion.
laconique
8

J'ai eu le même problème. Je me suis rendu compte que dans l' Manualélément X-Code, j'ai été sélectionné lorsque j'ai essayé de créer une prise par contrôle-glisser

entrez la description de l'image ici

Après l'avoir réglé sur automatique, cela a fonctionné

entrez la description de l'image ici

Vitalii
la source
J'ai eu exactement ce problème. Je n'ai même pas remarqué la différence.
Joshua Dance
Génial!!! J'ai perdu beaucoup de temps pour ce projet de nettoyage de bogues, en redémarrant xCode, en supprimant les données dérivées, mais c'était la seule solution qui a fonctionné pour moi! Merci beaucoup!
Anton Eregin
7

J'ai résolu ce problème en créant par programme les étiquettes et les champs de texte, puis en faisant glisser la commande depuis les petits cercles vides à gauche du code vers les composants du Storyboard. Pour illustrer mon propos: j'ai écrit @IBOutlet weak var HelloLabel: UILabel!, puis j'ai appuyé sur Commande et j'ai fait glisser le code dans le composant du storyboard.

KuboAndTwoStrings
la source
Cette solution a parfaitement fonctionné pour moi! Mis à part le, @IBOutlet weak var myButton: UIButtonj'ai utilisé le même processus pour configurer @IBAction func doSomething(_ sender: Any) { }puis connecter cette fonction à UIButton sur mon storyboard. Merci d'avoir partagé ce @KuboAndTwoStrings
Nii Mantse
6
  1. Fermez le projet sur lequel vous travaillez.
  2. Supprimez le dossier 【DerivedData your de votre projet. (Ce dossier peut se trouver dans le dossier de votre projet, ou dans
    ~/Library/Developer/Xcode/DerivedData/
    (votre projet) /) ou ailleurs que vous avez configuré.
  3. redémarrez votre projet.
Ali
la source
4

J'ai trouvé une solution de contournement plus facile car ce bug peut être trouvé sur XCODE 9.

Étape 1, accédez à votre viewcontroller et écrivez manuellement la propriété que vous souhaitez connecter comme dans l'exemple ci-dessous, assurez-vous d'utiliser le format ci-dessous.

@IBOutlet var faible questionsStackView: UIStackView!

La deuxième étape, accédez à votre storyboard et connectez votre vue ou tout ce que vous essayez de vous connecter à la propriété que vous avez créée à l'étape 1.

Ce qui précède vous fera gagner du temps pour supprimer et nettoyer les données dérivées.

Vision Mkhabela
la source
3

J'ai eu ce bug quand j'ai renommé la classe. Ensuite, je l'ai résolu simplement en suivant les étapes ci-dessous

  • Dans le menu Xcode -> Product->Clean
  • Restart le Xcode
Vinoth Vino
la source
c'était la seule solution qui a fonctionné pour moi assez drôle.
Joseph Astrahan
2

Dans mon cas, c'était bc. J'ai choisi un nouveau fichier UIViewController dans IB, puis j'ai essayé de faire un ctrl-glisser vers ce nouveau contrôleur sans supprimer d'abord les connexions précédentes dans l'inspecteur de connexions. Supprimez-les d'abord et réessayez.

Marius Waldal
la source
2

Pour moi, cela a fonctionné lorsque dans l'onglet droit> Localisation, j'ai coché la case Anglais. Initialement, seule la base a été vérifiée. Après cela, je n'ai plus eu de problèmes. J'espère que cela t'aides!

lmicu
la source
2

entrez la description de l'image ici

J'ai sélectionné l' option Automatique pour sélectionner le fichier ViewController.swift. Et puis je peux pouvoir prendre des sorties.

Arpit B Parekh
la source
2

Veuillez effectuer les deux étapes suivantes uniquement pour vous débarrasser de cette erreur.

1.  Clean Project using Product -> clean.
2.  Run the Project.

Essayez maintenant d'ajouter / de connecter les actions ou les prises.

Ça marche bien pour moi plusieurs fois.

Devendra Singh
la source
1

Cela s'est produit lorsque j'ai ajouté un Swiftfichier dans un Objective-Cprojet.
Donc, dans cette situation, ce que vous pouvez faire est. .

  • Select MY_FILE.Swift >> Delete >> Remove Reference
  • Select MY_FOLDER >> Add MY_FILE.Swift
  • Voila ! You are good to go .
roy
la source
Pour ça! J'essaie de résoudre ce problème par moi-même depuis une demi-heure déjà lol. Des problèmes comme celui-ci dans les Storyboards sont cependant faciles à résoudre. Merci! Cela m'a beaucoup aidé!
Glenn
0

Solution la plus simple: - J'ai utilisé xCode 7 et iOS 9.

dans votre .m

supprimer #import "VC.h"

enregistrez .m et reliez à nouveau votre prise, cela fonctionne bien.

Ahmed Abdallah
la source
0

J'ai utilisé xCode 7 et iOS 9.

dans votre .m

supprimer #import "VC.h"

enregistrez .m et reliez à nouveau votre prise, cela fonctionne bien.

dans votre .m

ajouter #import "VC.h"

enregistrer .m

Ahmed Abdallah
la source
0

Rien de tout cela n'a fonctionné pour moi, mais j'ai compris cela.

À l'intérieur du storyboard, j'ai copié le ViewController correspondant dans le presse-papiers et l'ai supprimé, puis je l'ai collé à nouveau.

Soudain, tout fonctionnait à nouveau comme un charme!

Markus
la source