Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what does "failed to load window nib file" mean?

Tags:

macos

cocoa

I'm working on my first Cocoa application, and I'm hoping very much that

[NSWindowController loadWindow]: failed to load window nib file 'Genius Document'

means that there's something very specific I've done wrong, because if I have to go back and redo all the bindings I'll want to kill myself.

FWIW, I'm working with a document-based application that has (so far) only one XIB file and no NIB files.

I can post code/screenshots of my bindings but in case that's not necessary I didn't want to make people wade through them.

Thanks for the help.

like image 558
Joel Derfner Avatar asked Oct 06 '22 08:10

Joel Derfner


1 Answers

The error you have described ultimately occurs because a call to load the nib file is failing. Make sure you've supplied the correct name for your Interface Builder file.

You can supply the correct value in a number of ways (depending on your use of AppKit), so I'll lay out the two most common possibilities and you can track down which one applies to you. Given what you've said in your question, I suspect you'll be dealing with the first scenario.

NSDocument windowNibName

If you are relying on the document architecture's defaults, you are probably not making the call in question directly. Instead, the framework makes the call on your behalf, using whatever nib name you specify on the given document class.

For example, if you were to make a new document-based project with a document class of "XYZDocument," the Xcode template would provide you with a basic XYZDocument class and a XYZDocument.xib file. The XYZDocument implementation file would have the following in it:

//  XYZDocument.m

- (NSString *)windowNibName {
    return @"XYZDocument"; // this name tells AppKit which nib file to use
}

If you were to alter this value, you would create the [NSWindowController loadWindow] error.

NSWindowController initialization methods

If you are making this call yourself (perhaps on your own subclass of NSWindowController), then you will have written a line like the following.

//  XYZWindowController.m (a subclass of NSWindowController)

- (id)init {
    self = [super initWithWindowNibName:@"XYZDocument"];
    if (self) {
      // initializations
    }
    return self;
}

If the string argument you've supplied does not match the name of the nib file, the same error will occur.

like image 128
keparo Avatar answered Oct 10 '22 04:10

keparo