2013-02-01 50 views
0

我要創建3個窗口,像這樣:可可得到主窗口

NSWindow *win1 = [[NSWindow alloc] initWithContentRect:rect1 
              styleMask:uiStyle 
               backing:backingStoreStyle 
               defer:NO]; 

,並在主窗口其中之一,然後讓主窗口,但我總是nil

[win1 makeKeyAndOrderFront:win1]; 
[win2 makeKeyAndOrderFront:win2]; 
[win3 makeKeyAndOrderFront:win3]; 
[win2 makeMainWindow]; 

而且所有這些都是零:

NSLog(@"%@", [app mainWindow]); 
NSLog(@"%@", [win1 isMainWindow]); 
NSLog(@"%@", [win2 isMainWindow]); 
NSLog(@"%@", [win3 isMainWindow]); 
+1

Downvoter;請解釋你爲什麼低估了。這對我來說看起來是一個合理的問題。 – trojanfoe

+0

你不應該使用'%@'格式記錄'[NSWindow isMainWindow]'的結果,因爲它是一個'BOOL',而不是一個對象。改爲使用格式「%d」或「%u」。 – trojanfoe

+0

我只是在這裏登錄結果信息,是%d或%u更好,但我也得到0,所以我在這裏問。 – Frank

回答

0

我想你的代碼。它確實返回一個實例化的NSWindow對象。我根本沒有零。你可以請更多的上下文來代碼片段?其次,在IB中創建窗口要容易得多,易於管理。第三,在傳遞消息makeMainWindow之前檢查- (BOOL)canBecomeMainWindow

如果你想創建自定義窗口程序,我建議在MainMenu.xib中創建一個窗口。得到它是IBOutlet,例如window。然後創建您的Windows win1,win2等,然後使用addChildWindow作爲子窗口添加到您的window

+0

@ Andrew-Dufresne嗨,你是如何得到這個物體的?它是win2嗎?在這裏我想用命令行來編寫這些代碼,然後測試主窗口。感謝您的評論。 – Frank

+0

@Frank看到這個[SO問題](http://stackoverflow.com/q/656129/177116)。它具有您需要以編程方式創建NSWindow的代碼。 –