0

我真的没有做太多,我已经被困住了。

到目前为止,我已经完成了:

  • 添加 NSWindowController子类 ( MikesWindowController.h & .m)

  • MikesDocument.m中删除了windowNibName(因为我正在实现我自己的 WindowController 子类。)

我试过了:

  • 测试 NSLog 是否会在initwindowControllerDidLoadNibapplicationDidFinishLaunching处返回。仅打印初始化时的 NSLog。

  • 并且,在编译我的 Document 应用程序后测试了Main Menu -> File -> New 。

我是否正确执行此操作?谢谢。任何建议都会很棒!在MikesDocument.m下

-(void)makeWindowControllers{
    MikesController *controller = [[MikesWindowController alloc]init];
    [self addWindowController:controller];

}
4

1 回答 1

0

经过深思熟虑,我找到了答案。呜呼。享受未来。

  • 从我的 NSWindowController 子类中删除了initWithWindow
  • 在我的 NSWindowController 子类中实现了initWithWindowNibName,所以现在无论何时我初始化我都必须指定窗口 nibName。

下面我在我的 NSWindowController 子类中实现了initWithWindowNibName ,如下所示:

MikesWindowController.m

-(id) initWithWindowNibName:(NSString *)windowNibName{
    self = [super initWithWindowNibName:windowNibName];
    return self;
}

(下)再次回到主文档,我更正了makeWindowController方法并使用“ MikesDocument”(对于 MikesDocument.xib)实例化了我的控制器并添加了它。

MikesDocument.m

-(void)makeWindowControllers{  
    MikesWindowController *controller = 
        // must tell controller which nib file to use. 
        [[MikesWindowController alloc]initWithWindowNibName:@"MikesDocument"];  
        [self addWindowController:controller]; 

   }

成功!甚至不必费心调用 init 或实现 init,因为它随时会返回错误。

于 2013-04-19T20:56:05.567 回答