Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
616 views
in Technique[技术] by (71.8m points)

ios - NSInternalInconsistencyException, reason: Could not load NIB in bundle

I've gone through a bunch of answers regarding this problem but none seem to relate to my problem.

I have two views, View 1 has a button. View 2 has a button.

View 1 button is tied to a model segue to View 2.

I click the Button in View 1, it opens up View 2.

In View 2 the button is connected to an IBAction which fires

[self dismissViewControllerAnimated:YES completion:nil];

Which closes the View and displays View 1 again - Now if I press the Button on View 1 again I get

*** 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''

I'm completely lost how to fix this problem. Please help!

EDIT:

  • This only happens when the device doesn't have internet
  • If I have a third screen in the chain with a webview which renders an image, if I goto that screen from View 2 the app doesn't crash.

EDIT 2:

I've also tried rebuilding the screen from scratch.

I'm completely baffled.

EDIT 3: Full Stacktrace

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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There can be quite a number of reasons that could raise the error you're receiving.

I'll start enumerating some things to check for and solutions:

  1. Have you renamed your xib or storyboard file outside Xcode? If so, check everywhere you have a reference to it for inconsistencies. Also be sure you respect the uppercase / lowercase letters anywhere you reference the file since is case sensitive.

  2. Go to Interface Builder, select your View1 ViewController > Utilities Panel > Identity Inspector > check if the Custom Class corresponds to your ViewController Class if you have one (.h and .m files).

  3. Check your Info.plist file. If you use storyboads, you should have an entry like Main storyboard file base name and NOT Main nib file base name. If you use nibs, then is vice-versa. Also check that the file base name corresponds with name of the actual file.

  4. Check your target's Build Phases > Copy Bundle Resources and make sure that your xib or storyboard file is added there.

  5. If you instantiate your View1 ViewController programmatically and you use xib file check the nib name for typos (remember, is case-sensitive). Also, if you currently append .xib file format to the name, remove the extension because it shouldn't be used. What I mean is this line of code: UIViewController *controller = [[UIViewController alloc] initWithNibName:@"xibFileName" bundle:nil];

  6. Check the properties of your xib or storyboard file in the file inspector and make sure that your file is linked to your target in the Target Membership selection panel.

  7. Check the properties of the xib or storyboard file in the file inspector and try switching your file Location to Relative to project or Relative to group. See if either way makes a difference.

  8. If you're adding your view controller programmatically in the initWithCoder then you should instantiate it in the viewDidLoad method instead

  9. If nothing from above applies to your situation, you could delete the file from Xcode (select Remove References) and import it again in your project.

Remember to ALWAYS clean your project after making the above changes (SHIFT+COMMAND+K).

Please let us know if it worked and what worked.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...