2011-07-21 78 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。

相关问题