J'essaie de créer une nib contenant une vue qui sera incorporée dans un TableViewCell. J'ai créé les fichiers d'interface et d'implémentation, ResultCell.h
et ResultCell.m
. Ils sont stock, out-of-the-box, aucun changement de code.
Je crée ensuite un fichier XIB vide et y glisse un UIView. Ensuite, je clique sur Propriétaire du fichier et configure le type sur ResultCell
. Je clique sur la vue et configure sa classe sur ResultCell
.
Voici les problèmes que j'ai:
ResultCell.h
n'apparaît pas lorsque je consulte le fichier ResultCell.xib. Je dois le forcer à charger en cliquant sur Automatique et en sélectionnant le fichier.J'ai essayé de créer et de recréer la vue, mais cela ne fonctionne tout simplement pas et j'ai commencé à perdre patience. Toute aide serait très, très appréciée!
Cela pourrait ne pas fonctionner pour votre problème spécifique, mais parfois, je reçois cette erreur lorsque je travaille avec des nibs récemment créées. La suppression et la recréation des nibs et des contrôleurs de vue avec les mêmes noms qu'auparavant n'ont pas résolu le problème, mais ont relancé Xcode.
Je suis entré dans un état similaire aujourd'hui. C'était très étrange: je pouvais attacher n'importe quel XIB (nouveau ou existant) à une classe ViewController déjà existante dans le projet, mais je ne pouvais pas créer un nouveau ViewController et le joindre correctement à un XIB. La fonctionnalité "assistant" ne fonctionnait pas, pas plus que la fonctionnalité de connexion d'IB à en-tête de fichier.
La fermeture et la réouverture du projet ne l'ont pas corrigé.
Quitter XCode et redémarrer ne l’a pas corrigé.
Créer un nouveau projet et tester les fonctionnalités ont bien fonctionné, ce qui m'a amené à penser qu'il y avait quelque chose de corrompu dans une mémoire cache quelque part.
Ma solution
Incidemment, le simple fait de procéder à un nettoyage complet ne semble pas éclaircir les choses. J'ai dû détruire les données dérivées. Je suis certain d'avoir pris cette position à cause des jeux de git que je jouais, mais je ne savais pas comment sortir, car même revenir aux versions précédentes de git n'a pas aidé. (C'était un indice important aussi que c'était quelque chose qui n'avait pas été suivi par le projet lui-même.)
J'ai eu le même problème. Et j'ai essayé:
Rien de tout cela n'a fonctionné. Ce qui a fonctionné pour moi était simplement de:
Et fait!
Je viens d'avoir ce problème et le redémarrage de Xcode ne le résout pas. J'ai supprimé les fichiers de classe du projet, puis je les ai rajoutés et cela a commencé à fonctionner.
Si le redémarrage de Xcode ne fonctionne pas chez vous, j’ai constaté que le fait de basculer le nouveau fichier .m vers l’appartenance cible fonctionnait.
Cela m'a aidé:
Si vous ne voyez pas de "panneau", jetez un coup d'œil au coin supérieur droit de la fenêtre et activez les boutons "Voir" appropriés. Si vous ne voyez pas les boutons "Voir", cliquez sur le bouton en haut à droite de la capsule.
dans XCode, accédez à l'organiseur, cliquez sur projet, cliquez sur supprimer les données dérivées ... puis nettoyez le projet
J'ai remarqué que le fichier .m avait été déplacé dans le dossier en.lproj.
Il suffit de supprimer (référence uniquement) le fichier .m du Xcode et de déplacer le .m du en.lproj. Ajoutez-le à nouveau.Il va résoudre le problème.
Ne vous inquiétez pas, vous retrouverez toutes vos relations.
Dans mon cas, cela a contribué à créer un "faux changement" (juste un espace) dans le fichier d'en-tête correspondant.
J'ai rencontré le même problème aujourd'hui. Le redémarrage de XCode n'a pas résolu le problème pour moi. Je suis parvenu à remettre les choses à la normale en utilisant "Supprimer" option de "Données dérivées" du projet qui se trouve sous Organiseur . Selon l'organisateur, "les données dérivées incluent l'index, la sortie de génération et les journaux". Je suppose que soit index ou build output était la cause de ce problème.
C’est peut-être ce qui a fonctionné pour moi. (Xcode v4.5)
Cela n'a pas fonctionné
J'essayais de contrôler la traînée dans la définition d'interface de mon .h
@interface SearchViewController : UIViewController
@end
Cela a fonctionné (peut-être est-ce ainsi que cela était supposé fonctionner, je ne le savais pas auparavant). Contrôle glisser et déposer après le support fermé.
@interface SearchViewController : UIViewController
{
}
@end
J'ai eu un problème similaire avec un projet écrit en Swift.
Ce qui a fonctionné pour moi a été de configurer IBOutlet avec un code comme celui-ci.
@IBOutlet var foo: UIView?
et ensuite connectez-le à Interface Builder en le faisant glisser vers le petit cercle qui apparaît juste à côté de la ligne de code.
Ce problème semble être un bogue Xcode qui survient surtout lorsque vous remplacez un fichier par un nouveau fichier du même nom. Xcode semble conserver une référence de l'ancien fichier du même nom.
Quoi qu'il en soit, la solution à ce problème semble être la suivante:
(Seules les étapes 1 et 2 ont résolu le problème pour moi.)
UITableViewCell
UIView
sur le canevas vide, vous devez faire glisser une UITableViewCell
Chaque fois que vous souhaitez charger une nouvelle cellule, appelez:
[[NSBundle mainBundle] loadNibNamed:nibName
owner:controllerWithOutletToCell
options:nil]
après le chargement, utilisez la cellule et réglez ivar/outlet sur nil, prêt pour le prochain chargement
il y a d'autres moyens, mais c'est courant
Aucune des solutions de contournement ci-dessus n'a résolu le problème de connecteur pour moi. J'ai donc mis mon projet animalier en veilleuse jusqu'à ce que je tombe sur le thread de stackoverflow suivant:
https://stackoverflow.com/a/15873770/2846800
Je travaillais sur un projet volumineux dans une version précédente de XCode et j'avais désactivé l'indexation. En réactivant l'indexation, mon problème est maintenant corrigé:
defaults delete com.Apple.dt.XCode IDEIndexDisable
Je peux maintenant utiliser les fonctionnalités D & D d'Interface Builder. J'espère que cela peut aider les autres ...
Pour moi, le nettoyage ou la suppression de DerivedData a résolu le problème.
J'ai essayé de supprimer et de recréer ma classe UIViewController plusieurs fois et j'ai eu le problème encore et encore.
Ensuite, j'ai recréé la classe UIViewController et lui ai donné un nom différent. Cela a résolu le problème pour moi.
J'ai le même problème. Le projet de reconstruction m'aide à Command+B
.
Il suffit de mettre une ligne entre @implementation et @synthesize. La plupart des réponses ici ont cela en commun. Ça a fonctionné pour moi
@implementation
@synthesize
Il s’agit peut-être d’un sujet ancien, mais au cas où vous auriez le même problème à l’avenir, essayez de supprimer les fichiers .xib, .h et .m associés et créez-en de nouveaux. Pour moi, le UIViewController dans mon fichier .h n'était pas violet et même le backspacing et sa frappe ne servaient à rien.
Renommer les fichiers de classe peut les dissocier de XIB. Cette réponse m'a aidé à découvrir ceci:
Ctrl-glisser du bouton à la méthode ne fonctionne pas. Xcode/Interface Builder
Vérifiez que votre classe personnalisée est définie correctement dans l'inspecteur d'identité.
Symptôme similaire, mais cause différente.
Apparemment, j'ai appuyé sur la touche Retour arrière lorsque le focus était sur la vue Assistant, car l'une des lignes de commentaire du modèle de fichier standard allait de // à /, ce qui entraîne la non compilation du fichier.
La correction du commentaire a permis au SDK d'analyser le fichier, de le reconnaître en tant que UIViewController et de l'ajouter à la sortie.
SO - Si vous rencontrez ce problème, effectuez une compilation ou une analyse pour déterminer si des erreurs doivent être corrigées dans votre fichier .h de contrôleur de vue. ALORS essayer les autres solutions.
J'espère que cela aide quelqu'un là-bas.
Je viens juste de supprimer le dossier de données dérivé. Vous devez cliquer sur Fenêtre -> Organiseur -> Projets -> Supprimer les données dérivées.
ET REDÉMARREZ XCODE.
Vous devriez être bon pour y aller!
En utilisant Swift, j'ai eu un problème similaire. J'ai découvert que les commentaires faisaient partie du problème pour moi.
J'ai utilisé le contrôleur de vue par défaut, y ai travaillé, puis créé un deuxième contrôleur de vue en copiant le premier en le ramenant à viewDidLoad () et en renommant TestViewController. Constructions travaillées, code exécuté. Tout était bien.
Quand je suis allé faire glisser un UITextField pour créer un point de vente, il ne m'a pas laissé. J'ai remarqué que mes commentaires disaient toujours "ViewController.Swift", j'ai donc changé le texte du commentaire en "TestViewController.Swift" et l'ai reconstruite. J'ai pu connecter ma prise!
Je me demande si ce qui s’est passé, c’est que l’indexeur lisait les commentaires ainsi que les noms des classes, et qu’il était confus.
Je viens d'essayer tout ici et rien n'a fonctionné (en utilisant un aperçu du développeur pour Xcode 5).
La seule chose qui a fonctionné pour moi a été de mettre cette ligne incomplète dans mon fichier d'interface:
@property (nonatomic, weak)
Pour une raison quelconque, ajouter des prises et des actions par glisser-déposer à partir d'un fichier .xib a bien fonctionné par la suite.
Si vous avez copié des fichiers d'un autre projet, assurez-vous de cocher la case "Ajouter aux cibles".
J'ai eu ce problème et trouvé une solution ne figurant pas ci-dessus.
Dans mon cas, je pouvais constater que le fichier .h de la classe avait un problème, car mon contrôleur de vue personnalisé ne reconnaissait pas la classe: UIViewController (en noir et non en violet). Tous les autres contrôleurs de vue personnalisés avaient le: UIViewController en violet.
dans mon cas, et éventuellement le vôtre, j'avais besoin d'ajouter la classe au menu déroulant cibles/phases de construction/compilation des sources. Le fichier .m doit être ajouté. Tous les autres .m étaient là mais pas celui-là.
Une fois que je l'ai ajouté, le: UIViewController est apparu en violet et tout a bien fonctionné.
Dans XCode 7.1, l'ajout du connecteur à un point différent de mon fichier source a fonctionné. L'erreur m'a renvoyé à l'une de mes variables comme s'il s'agissait d'une classe (cela n'avait aucun sens). L'erreur a cessé lorsque j'ai ajouté le connecteur au-dessous de cette variable au lieu de la voir au-dessus.
La nouvelle classe ne faisant pas partie de "TARGET" en est probablement la cause fondamentale, comme le mentionnent certaines de ces réponses.
Lors de la création d'une nouvelle classe de cacao, l'option d'ajouter une nouvelle classe à la cible est cochée par défaut. Si, pour une raison quelconque, l'option n'est pas cochée lorsque vous cliquez sur Enregistrer, vous aurez ce problème.
Chacune de ces solutions de contournement qui ajoutent la nouvelle classe à la cible des applications travaillera à résoudre le problème. C'est un point commun à toutes ces "corrections".
Je pense que XCode a probablement des bugs qui font qu'un nouveau fichier, par défaut, ne soit PAS ajouté à la cible principale des applications. Le correctif se résume à ajouter votre classe 'cassé' à la cible principale
Pour mon cas, j'ai plusieurs projets avec d'autres dépendances. J'ai essayé de le résoudre en supprimant les données dérivées ou en redémarrant XCode mais cela ne fonctionnait pas. En fin de compte, j'ai essayé la méthode suivante et cela fonctionne:
Accédez à cible> Construire les architectures cibles uniquement> et définissez Debug et Release sur NO.
Définissez cette option pour tous les projets de l'espace de travail et recompilez-la pour vous assurer qu'il n'y a pas d'autres erreurs. Peut-être que ça n'a pas de sens mais que ça l'a fait. Au cours de ma compilation, j'ai eu d'autres problèmes tels que des erreurs de l'éditeur de liens et des symboles non trouvés.
Pour le fichier * .m de cette vue de classe, ouvrez "Afficher l'inspecteur de fichier" et décochez "Appartenance à la cible" pour ce projet, puis nettoyez (menu Produit-> Nettoyer) et revérifiez "Appartenance à la cible" pour ce projet.