11
votes

'NsinternalcONSistencyException', Raison: '- [UIViewController _LoDviewfromnibniBniBniBniBniBnamed: Bundle:] Chargé le gameview NIB mais la sortie de vue n'a pas été définie

Ce n'est pas la même situation que la multitude d'autres questions similaires ici.

* * Application de terminaison due à une exception non capturée 'NsinternalInconSistencyException', raison: '- [UIViewController _loadviewfromnibniBnamed: Bundle:] Chargé le jeu de gameviette mais la sortie de vue n'a pas été définie. . '

Vous pouvez penser "faire comme indiqué, connectez le propriétaire du fichier à la vue de l'IB!". Mais la chose est que je n'ai même pas de gameview.xib dans mon projet ou même dans le répertoire de projet.

J'ai un "gameviewController.m" et correspondant "gameviefController.xib" dans mon projet. L'utilisation de ce jeuViewController est ce qui soulève cette erreur, mais je ne comprends pas où il reçoit l'idée d'essayer de charger "gameview.xib". Il ne devrait-il pas utiliser "gameviewcontroller.xib" à la place?


si je grep mon répertoire de projet, je le vois référencé de "userinterfaCestate.xcuserstate". xxx

Ce fichier mentionné n'existe pas . J'ai peut-être eu un fichier avec ce nom avant et renommé / l'a supprimé, mais ce n'est pas référencé de partout où je peux voir dans IB.

ai-je réussi à confondre Xcode?


0 commentaires

12 Réponses :


5
votes

Vérifiez les fichiers NIB que vous utilisez (comme MainWindow.xib). Si vous chargez GameviewController à partir d'une NIB, vérifiez que le fichier est en cours de chargement (sous l'onglet Info de l'inspecteur). Assurez-vous qu'il est défini sur "GameViewController" et non "GameView".


1 commentaires

Lorsque je définirai manuellement "NIB NAME" (c'était vide avant) pour le gameviewController J'avais mis à l'intérieur de Mainwindow.xib, il a commencé à travailler. Merci beaucoup! J'ai passé des heures à essayer de résoudre ce problème. C'est toujours un mystère pourquoi il essaierait de charger le mauvais Xib en premier lieu, mais au moins cela fonctionne.



0
votes

donné que vous avez référencé précédemment, il semble que Xcode n'a pas acqué, il n'existe plus. Dans le menu du produit, sélectionnez "Clean" puis "Construire", j'espère que cela aura dépassé l'ancienne référence pour vous.


0 commentaires

0
votes

Faites face au même problème, a dû modifier le nom de la vue dans le code: xxx

à xxx


0 commentaires

20
votes

Ma solution était un peu différente.

  1. Cliquez sur le constructeur XIB dans l'interface
  2. Sélectionnez le propriétaire du fichier à gauche
  3. Ouvrez l'inspecteur des connexions du propriétaire du fichier
  4. Si la propriété View n'est pas encore câblée, contrôlez-la-glisser-la glisser dans l'icône Afficher (sous le propriétaire du fichier et les icônes de premier répondeur).

0 commentaires

0
votes

J'ai eu plusieurs vues et par accident (je ne sais pas comment cela s'est engagé) mais mon point de vue de fond n'a pas eu de propriétaire de dossier, alors pour quelqu'un d'autre qui a ce problème à l'avenir, assurez-vous que tous vos points de vue. avoir un propriétaire de fichier.


0 commentaires

0
votes

J'avais la même erreur, vérifiez le nom de la classe à partir de l'interface Builder et voyez que j'ai saisi le nom de la classe de contrôleur d'affichage à l'attribut de classe personnalisé.


0 commentaires

2
votes

J'ai récemment résolu ce problème. Assurez-vous de sauvegarder votre projet avant de suivre les étapes données ici (juste au cas où). Ces étapes ont résolu mon problème

  1. Quittez Xcode
  2. naviguer vers userinterfaCestate.xcusère Situé au .xcodeproj / project.xcworkspace / xcuserdata / .xcuserdata
  3. Réouvez Xcode. Xcode créera un nouveau userinterfaCestate.xcuserstate qui sera propre.

0 commentaires

0
votes

UIVIEWCONTROLLER recherche une pointe avec le même nom que le contrôleur lorsqu'il est passé nul à initwithnibnamed: Bundle: Vérifiez que le nom du fichier que vous passez à l'initialiszer est correct et existe!

Par exemple: (E.g. [[CCVisitorScontroller Alloc] Initwithnibname: Nil Bundle: nil] Toutefois, UIViewController essaie de charger NIB avec nom CCVisitorsController Par défaut.

Si ce fichier n'existe pas, l'erreur que vous avez mentionnée est lancée.


0 commentaires

1
votes

Dans mon cas, je n'utilisais pas de xib du tout. J'avais besoin de supprimer le fichier .m des phases de construction> Compiler les sources et l'a ajouté.


0 commentaires

0
votes

J'ai eu ce problème parce que je faisais quelque chose de mauvais dans

  • (id) initwithCoder: (NSCODER *) Coder

    que la nib charge.


0 commentaires

5
votes

J'avais aussi cette question, mais j'ai dû le résoudre différemment. Fondamentalement, j'ai un nom de contrôleur d'affichage MainViewController, qui a un XIB nommé MainViewcontroller.xib. Cette nib dispose de la propriété de voir le propriétaire du fichier principal.

J'ai aussi fait une vision principale.xib qui contenait une vue qui allait être ajoutée de manière programmatique à la vue définie dans MainViewController.xib et sa vue. Il a fondamentalement encapsulé une vue interne qui serait dans la vue MainviewController.xib, et il y avait également le propriétaire de fichier défini sur MainViewController.

Si fondamentalement, je voulais que MainViewController.xib soit chargée comme NIB pour l'objet MainViewController, ainsi que dans MainViewController, à un moment donné, j'ajouterais la vue interne spécifiée par Mainview.xib.

Quelques problèmes sont survenus:

1.) J'ai trouvé dans les documents Apple que lors du chargement d'un contrôleur d'affichage via Storyboard ou NIB:

"Si le nom de la classe de contrôleur d'affichage se termine par le mot" contrôleur ", comme Dans MyViewController, il cherche un fichier NIB dont le nom correspond à la Nom de la classe sans le mot "contrôleur", comme dans myView.nib.

Il cherche un fichier NIB dont le nom correspond au nom de la vue Classe du contrôleur. Par exemple, si le nom de la classe est MyViewController, Il cherche un fichier myViewController.nib. "

Par conséquent, vous ne pouvez pas avoir de nib appelé Mainview.xib Si vous avez également une nib appelée MainViewController et que vous souhaitez que MainViewController.xib soit la principale NIB pour MainViewController.

2.) Même si vous supprimez Mainview.xib ou renommez-la à autre chose (MainIntinternalview.xib dans ce cas), vous devez supprimer / nettoyer votre simulateur iOS en tant que vieux fichier NIB (MainView.xib) restera toujours dans L'application. Il n'écrit pas l'ensemble du package d'applications lorsque vous reconstruisez / retentissez votre application.

Si vous ne souhaitez pas réinitialiser vos paramètres de contenu (vous avez peut-être des données que vous souhaitez conserver), puis cliquez avec le bouton droit de la souris sur votre application dans votre dossier Simulator IOS, affichez le contenu du package, trouvez MainView.nib et Supprimer ce. Xcode ne le fera pas automatiquement pour vous lorsque vous reconstruisez, nous devons donc éliminer manuellement l'ancienne nib.

Globalement, ne faites pas de NIBS nommée MainViewController et MainView, c'est-à-dire avec le même préfixe. Appelez MainView.xib quelque chose d'autre, comme Maininternalview.xib.


0 commentaires

0
votes

Dans mon cas, cette erreur a été produite par Dumb Erreur - I Supprimer _View Voir erreur muette


0 commentaires