NSInternalInconsistencyException, raison: Impossible de charger NIB dans le bundle

J'ai parcouru un tas de réponses concernant ce problème, mais aucune ne semble se rapporter à mon problème.

J'ai deux vues, View 1 a un button. La vue 2 a un button.

Le button Vue 1 est lié à un model de vue à Vue 2.

Je clique sur le button dans la vue 1, il ouvre la vue 2.

Dans View 2, le button est connecté à une IBAction qui triggers

[self dismissViewControllerAnimated:YES completion:nil]; 

Qui ferme la vue et affiche à nouveau la vue 1 – Maintenant, si j'appuie à nouveau sur le button de la vue 1, je reçois

 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle <x/y/z/SomeApp.app> (loaded)' with name 'tvz-Io-ndz-view-rB8-bq-l6j' and directory 'Main.storyboardc'' 

Je suis complètement perdu comment résoudre ce problème. S'il vous plaît aider!

MODIFIER:

  • Cela se produit uniquement lorsque l'appareil n'a pas Internet
  • Si j'ai un troisième écran dans la string avec un webview qui rend une image, si je vais à cet écran de View 2 l'application ne plante pas.

EDIT 2:

J'ai également essayé de rebuild l'écran à partir de zéro.

Je suis complètement déconcerté.

EDIT 3: Stacktrace complète

 2015-01-19 09:10:58.528 SomeApp[37747:2203364] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/user/Library/Developer/CoreSimulator/Devices/D23C1B7C-7330- 466E-8369-762C6727B19C/data/Containers/Bundle/Application/AE67C3D3-C5AE- 4A66-91EC-54D976A4A4FC/SomeApp.app> (loaded)' with name 'tvz-Io-ndz-view- rB8-bq-l6j' and directory 'Main.storyboardc'' *** First throw call stack: ( 0 CoreFoundation 0x01f64946 __exceptionPreprocess + 182 1 libobjc.A.dylib 0x01beda97 objc_exception_throw + 44 2 CoreFoundation 0x01f6486d +[NSException raise:format:] + 141 3 UIKit 0x008f8e06 -[UINib instantiateWithOwner:options:] + 1003 4 UIKit 0x0071b624 -[UIViewController _loadViewFromNibNamed:bundle:] + 270 5 UIKit 0x0071bdbb -[UIViewController loadView] + 295 6 UIKit 0x0071bfef -[UIViewController loadViewIfRequired] + 78 7 UIKit 0x0071c595 -[UIViewController view] + 35 8 UIKit 0x00d8f707 -[_UIFullscreenPresentationController _setPresentedViewController:] + 75 9 UIKit 0x006f1a81 -[UIPresentationController initWithPresentedViewController:presentingViewController:] + 113 10 UIKit 0x00729a61 -[UIViewController _presentViewController:withAnimationController:completion:] + 2102 11 UIKit 0x0072c5d2 __62-[UIViewController presentViewController:animated:completion:]_block_invoke + 345 12 UIKit 0x0072c424 -[UIViewController presentViewController:animated:completion:] + 224 13 UIKit 0x0072c8ea -[UIViewController presentModalViewController:animated:] + 57 14 UIKit 0x00bf448d -[UIStoryboardModalSegue perform] + 271 15 UIKit 0x00be1b49 -[UIStoryboardSegueTemplate _perform:] + 217 16 UIKit 0x00be1bc5 -[UIStoryboardSegueTemplate perform:] + 116 17 UIKit 0x006d4907 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 1490 18 UIKit 0x006d4af7 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 285 19 UIKit 0x006d9df3 __38-[UITableView touchesEnded:withEvent:]_block_invoke + 43 20 UIKit 0x005ee0ce ___afterCACommitHandler_block_invoke + 15 21 UIKit 0x005ee079 _applyBlockToCFArrayCopiedToStack + 415 22 UIKit 0x005ede8e _afterCACommitHandler + 545 23 CoreFoundation 0x01e879de __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30 24 CoreFoundation 0x01e87920 __CFRunLoopDoObservers + 400 25 CoreFoundation 0x01e7d35a __CFRunLoopRun + 1226 26 CoreFoundation 0x01e7cbcb CFRunLoopRunSpecific + 443 27 CoreFoundation 0x01e7c9fb CFRunLoopRunInMode + 123 28 GraphicsServices 0x043d524f GSEventRunModal + 192 29 GraphicsServices 0x043d508c GSEventRun + 104 30 UIKit 0x005c48b6 UIApplicationMain + 1526 31 SomeApp 0x000e482d main + 141 32 libdyld.dylib 0x027e8ac9 start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException 

James

Il peut y avoir un certain nombre de raisons qui pourraient augmenter l'erreur que vous recevez.

Je vais commencer à énumérer des choses à vérifier et des solutions:

  1. Avez-vous renommé votre file xib ou storyboard en dehors de Xcode? Si oui, vérifiez partout où vous avez une reference pour des incohérences. Veillez également à respecter les lettres majuscules / minuscules partout où vous faites reference au file car il est sensible à la casse.

  2. Accédez à Interface Builder, select votre View1 ViewController> Utilities Panel> Identity Inspector > vérifiez si la Custom Class correspond à votre class ViewController si vous en avez un (files .h et .m).

  3. Vérifiez votre file Info.plist . Si vous utilisez des storyboads, vous devez disposer d'une input comme Main storyboard file base name et PAS Main nib file base name . Si vous utilisez des plumes, alors vice-versa. Vérifiez également que le nom de base du file correspond au nom du file réel.

  4. Vérifiez les Build Phases > Copy Bundle Resources votre cible Build Phases > Copy Bundle Resources et assurez-vous que votre file xib ou storyboard y est ajouté.

  5. Si vous instanciez votre View1 ViewController par programme et que vous utilisez un file xib, vérifiez le nom de la plume pour les fautes de frappe (callbackez-vous, est sensible à la casse). En outre, si vous ajoutez actuellement le format de file .xib au nom, supprimez l'extension car elle ne doit pas être utilisée. Ce que je veux dire, c'est cette ligne de code: UIViewController *controller = [[UIViewController alloc] initWithNibName:@"xibFileName" bundle:nil];

  6. Vérifiez les propriétés de votre file xib ou de votre storyboard dans l'inspecteur de files et assurez-vous que votre file est lié à votre cible dans le panneau de sélection Target Membership .

  7. Vérifiez les propriétés du file xib ou du storyboard dans l'inspecteur de files et essayez de faire passer votre file Location à Relative to project ou Relative to group . Voyez si l'une ou l'autre façon fait la différence.

  8. Si vous ajoutez votre controller de vue par programme dans initWithCoder vous devez l'instancier dans la méthode viewDidLoad place.

  9. Si rien de ce qui précède ne s'applique à votre situation, vous pouvez supprimer le file de Xcode (select Remove References ) et l'importer de nouveau dans votre projet.

N'oubliez pas de TOUJOURS nettoyer votre projet après avoir apporté les modifications ci-dessus (MAJ + COMMANDE + K).

S'il vous plaît laissez-nous savoir si cela a fonctionné et ce qui a fonctionné.

J'ai essayé toutes les réponses ci-dessus, mais ils n'ont pas fonctionné. Pour moi, la solution consistait à inclure le xib dans la ressource cible.

Étapes effectuées:

  • Cliquez sur le file xib.
  • Ouvrez Identity Inspector -> Target Membership et vérifiez la deuxième option (ProjectName_Resource)

Vous devrez peut-être configurer le bundle pour la class avant d'accéder au xib:

Objectif c:

 //Bundle initialisation NSBundle* bundle = [NSBundle bundleForClass:[self class]]; //Initialising the nib UIView *nibView = [[bundle loadNibNamed:@"nibFileName" owner:self options:nil] objectAtIndex:0]; //Display the ad (this will vary based on your application setup) [[[UIApplication sharedApplication] keyWindow] addSubview:nibView]; 

Il est également possible que UITableViewDataSource ou UITableViewDelegate ne soient pas implémentés dans le UIViewController souhaité

Si vous travaillez avec des cocoapodes, il peut également être utile d'exécuter la pod update . Un de mes coéquipiers a changé un pod autour duquel s'est produite cette erreur, donc la mise à jour de pod l'a corrigé pour moi.

Vous pouvez essayer et vérifier les scénarios ci-dessous pour l'exception:

1) Si le file nib est manquant, ajoutez le même dans votre Xcode

2) Mettez une vérification à l'intérieur de la méthode IBAction avant de la renvoyer, référez – vous à