【问题标题】:Window-less Cocoa application无窗口 Cocoa 应用程序
【发布时间】:2011-10-10 16:22:16
【问题描述】:

我是 Objective-C 和 Cocoa 的初学者。

我想创建一个无窗口应用程序,它只在系统托盘中显示NSStatusItem。托盘工作正常,但是有一个问题。

由于某种原因,我的应用程序自动为我创建了一个我不想要的窗口。

我以为是我在 Xcode 中创建应用程序时创建的自动 Interface Builder 模板引起的,所以我从项目中删除了 .nib 文件。但是窗口仍然被创建。

唯一包含对窗口的引用的行在标题中:

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

在实现文件中:

@synthesize window;

都是自动添加的,不是我写的。

如何让应用停止创建窗口?我什至尝试从代码中删除所有对window 的引用,包括NSWindow *window,但仍然创建了窗口。

我现在的临时解决方法是在应用程序中调用[window close];,但肯定有更好的方法吗?

【问题讨论】:

    标签: objective-c macos nswindow


    【解决方案1】:

    如果您不想显示窗口,您可以考虑在后台运行您的应用程序。这将阻止窗口出现。

    为了在后台运行您的应用程序,请在应用程序的 PLIST 文件中将 YES 设置为“应用程序仅在后台”

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我怀疑您的代码中没有任何内容正在创建窗口。当您创建一个新的 Cocoa Xcode 应用程序时,Xcode 会为您设置一个带有您的界面的 XIB。在界面生成器中打开MainMenu.xib(应该在Resources下)并删除它默认抛出的窗口。

        【讨论】:

        • 是的,我就是这么想的。我删除了整个 .xib 文件,但它仍然出现...
        • 刚刚重新创建了项目,这次我删除了 .xib 中的窗口,而不是整个 xib 并且它起作用了。谢谢..
        • 太棒了。当您删除 XIB 时,可能是现有应用程序二进制文件保留了您删除之前已编译的 XIB。这样,XIB 基本上仍然存在。不管怎样,很高兴听到你弄明白了!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多