我有一個NSWindowController子類具有以下實現所謂_PreferencesWindowController
-NSWindowController:從筆尖但的ShowWindow LOADWINDOW負荷窗口:什麼也不做
@synthesize window;
- (id)init {
self = [super initWithWindowNibName:@"PreferencesWindow"];
if (!self) return nil;
return self;
}
我嘗試用下面的代碼顯示窗口中_PreferencesWindowController
-
_preferencesWindowController = [[_PreferencesWindowController alloc] init];
[_preferencesWindowController showWindow:nil];
它什麼也沒做,我從調試器檢查_preferencesWindowController.window
是nil
。
但是,如果我打電話loadView
_preferencesWindowController
窗口可以加載,並可見; _preferencesWindowController.window
不再是零值 -
[_preferencesWindowController loadWindow];
我看着蘋果的NSWindowController文檔就明確表示,「你永遠不應該直接調用loadWindow
」,而不是showWindow:
應該被使用。我想知道我可能錯過了什麼,導致了上述我見過的行爲。
聲明屬性不是問題,但綜合它可能已經-WindindowController已經有一個'window'的實現,它不僅僅是一個簡單的屬性訪問器。不論你是否用'IBOutlet'(與編譯器無關或在運行時)聲明它,因爲NSWindowController已經有了這個名字的出口ivar。你應該切掉伊娃*和*財產。 – 2010-08-22 05:28:09
你說得對。無論我是否聲明瞭伊娃,我的子類在Interface Builder中看到了'window' ivar。和你的建議解決了我用' - [NSOpenPanel beginSheetModalForWindow:completionHandler:]''謝謝! :) – koo 2010-08-22 07:42:39