【发布时间】:2010-09-07 14:53:24
【问题描述】:
我正在使用NSDocument 的自定义子类和NSWindowController 的自定义子类。问题是我无法从我的自定义窗口控制器中引用我的自定义文档。
在 IB 中,在 TKDocument NIB 中,我将文件所有者设置为 TKWindowController。
在我的TKDocument 子类中,我有:
- (void) makeWindowControllers {
TKWindowController *controller = [[TKWindowController alloc] init];
[self addWindowController:controller];
}
然后在我的TKWindowController 子类中我覆盖setDocument 以确保它被调用:
- (void) setDocument(NSDocument *) document {
NSLog(@"setDocument:%@", document);
[super setDocument:document];
}
然后(再次在TKWindowController)我的操作引用了文档本身:
- (IBAction) plotClicked:(id) sender {
TKDocument *doc = [self document];
NSLog(@"plotClicked %@", doc);
}
setDocument 中的 NSLog 输出我的 [TKDocument description] 覆盖返回的字符串,正如我所期望的那样;我只是把它放在那里看看它是否被调用。但是,plotClicked 中的 doc 为空。
我可能做错了什么?
编辑:我认为问题与 NIB 有关。我的文档有自己的 NIB,文件的所有者设置为上面提到的自定义控制器。 plotClicked 操作从 MainMenu.xib 中的菜单项触发。我相信它正在访问与当前活动文档无关的控制器的新实例。
那么,如何将两者联系起来呢?我的问题是:如何从 MainMenu.xib 获取当前活动文档(或其窗口控制器)的句柄?
谢谢
【问题讨论】:
标签: cocoa