I am using a custom subclass of NSDocument
and a custom subclass of NSWindowController
. The problem is that I cannot reference my custom document from my custom window controller.
In IB, in the TKDocument
NIB I have File's Owner set to TKWindowController
.
In my TKDocument
subclass I have:
- (void) makeWindowControllers {
TKWindowController *controller = [[TKWindowController alloc] init];
[self addWindowController:controller];
}
Then in my TKWindowController
subclass I overrode setDocument
to make sure it was being called:
- (void) setDocument(NSDocument *) document {
NSLog(@"setDocument:%@", document);
[super setDocument:document];
}
and then (again in TKWindowController
) my action which references the document itself:
- (IBAction) plotClicked:(id) sender {
TKDocument *doc = [self document];
NSLog(@"plotClicked %@", doc);
}
The NSLog in setDocument
outputs the string returned by my [TKDocument description]
override as I'd expect; I only put it there to see if it was being called. However, doc
in plotClicked
is null.
What might I have done wrong?
EDIT: I believe the problem is to do with NIBs. My Document has its own NIB with File's Owner set to the custom controller as mentioned above. The plotClicked
action is fired from a menu item in MainMenu.xib. I believe it's hitting a new instance of the controller which isn't associated with the current, active document.
So, how do I link the two? My question is really this: How do I obtain a handle to the current active document (or its windowcontroller) from MainMenu.xib?
Thanks