2011-07-21 47 views
5

我是Objective-C和Cocoa的完整初學者。無窗口可可應用程序

我想創建一個無窗口的應用程序,它只是在系統托盤中顯示一個NSStatusItem。托盤工作正常,但是,有一個問題。

出於某種原因,我的應用程序會自動爲我創建一個窗口,這是我不想要的。

我認爲這是由我在Xcode中創建應用程序時創建的自動Interface Builder模板造成的,所以我從項目中刪除了.nib文件。但窗口仍然被創建。

包含對窗口的引用唯一的線在頭:

NSWindow *window; 
@property (assign) IBOutlet NSWindow *window; 

,並在實現文件:

@synthesize window; 

兩個被自動添加,我沒有寫這個。

我該如何停止創建窗口的應用程序?我甚至試圖從代碼中刪除對window的所有引用,包括NSWindow *window,但窗口仍然創建。

我現在的臨時修復是在應用程序中調用[window close];,但是肯定有更好的方法嗎?

回答

8

我懷疑的是,沒有在你的代碼中創建窗口。當您創建一個新的Cocoa Xcode應用程序時,Xcode會爲您設置一個帶有界面的XIB。在界面構建器中打開MainMenu.xib(應該在Resources下)並且刪除它默認引入的窗口。

+0

是的,那是我的想法。我刪除了整個.xib文件,但它仍然出現... – houbysoft

+0

剛剛重新創建項目,這一次我刪除了.xib中的窗口,而不是整個xib,它工作。謝謝.. – houbysoft

+0

太好了。當您刪除XIB時,可能是現有的應用程序二進制文件在將其刪除之前保留了已編譯的XIB。這樣XIB基本上仍然存在。無論如何,很高興聽到你明白了! –

4

如果你不想顯示一個窗口,你可以考慮在後臺運行你的應用程序。這將停止窗口出現。

爲了在後臺運行的應用程序,設置YES到「應用程序僅僅是背景」在您的應用程序的plist文件

+0

我也嘗試過。窗戶仍然顯示出來。 – houbysoft

0

在你的NSDocument子類'windowNibName方法中返回false。

相關問題