Reputation: 17217
I have a custom NSWindowController
subclass that loads a NIB file during initialization like this:
self = [super initWithNibNamed:@"myNib"];
if (self != nil) {
[self window];
}
The nib contains some custom views and some other controls. The NSWindowController
is the file's owner and at least one of the views even binds to it.
Simply, what do I have to do to close and release that window? I spend the whole day trying to figure that out and I am still clueless.
Upvotes: 3
Views: 7455
Reputation: 96373
You don't unload a nib; “loading” it is simply unarchiving the objects that are archived within it. That's not a state that persists indefinitely; it's a momentary action. Once you've unarchived the object, it doesn't matter where it came from.
If you were not in a window controller, then:
close
message.releasedWhenClosed
property turned on (you can do this in IB) before you send it a close
message, or send it a release
message after the close
message.But since you are in a window controller, just send yourself a close
message.
See also “Window Closing Behavior” in the Document-Based Applications Overview (document-based apps being the main users of window controllers).
Upvotes: 6
Reputation: 7550
Thanks @peter hosey.
[self close]; // will work only if your nib is wired up correctly.
Open the nib for your file. On the Window you need to wire the "Referencing Outlet" of the window to the "Files Owner" and choose Window. Otherwise nothing will work.
Upvotes: 13