代码之家  ›  专栏  ›  技术社区  ›  koo

NSWindowController:loadWindow从nib加载窗口,但showWindow:不执行任何操作

  •  2
  • koo  · 技术社区  · 16 年前

    _PreferencesWindowController 通过以下实现-

    @synthesize window;
    
    - (id)init {
    
     self = [super initWithWindowNibName:@"PreferencesWindow"];
     if (!self) return nil;
    
     return self;
    }
    

    我试着把窗户伸进去 通过使用以下代码-

    _preferencesWindowController = [[_PreferencesWindowController alloc] init];
    [_preferencesWindowController showWindow:nil];
    

    _preferencesWindowController.window nil 从调试器。

    但是如果我打电话 loadView _preferencesWindowController 窗口可加载且可见; _首选ncesWindowController.window 不再是零价值-

    [_preferencesWindowController loadWindow];
    

    我看了苹果在NSWindowController上的文档,它明确地说“你不应该直接调用 loadWindow showWindow: 应该使用。我想知道我可能错过了什么导致了我所看到的上述行为。

    1 回复  |  直到 16 年前
        1
  •  3
  •   koo    16 年前

    好吧,我通过看 NSWindowController

    问题在我的首选项swindowcontroller的头文件中-

    @interface _PreferencesWindowController : NSWindowController <NSToolbarDelegate> {
    
        NSWindow *window;
    
    }
    
    @property (assign) IBOutlet NSWindow *window;
    
    @end
    

    通过删除@property声明并更改 NSWindow *window ivar至 IBOutlet NSWindow *window , showWindow:

    显示窗口: NSWindow控制器 的实现。