如何在NSDocument的窗口标题栏中隐藏文件图标

时间:2014-08-18 21:45:45

标签: objective-c cocoa

有谁知道如何在基于文档的应用程序窗口的标题栏中隐藏小图标?

NSWindow的文档说:

  

要自定义文档图标,您可以使用以下代码段:

[[window standardWindowButton:NSWindowDocumentIconButton] setImage:nil];

但是这不起作用因为window:stardardWindowButton:NSWindowDocumentIconButton返回nil,根据文档意味着该按钮不在窗口的视图层次结构中。

我查看了NSDocument,但这似乎并没有在任何地方引用图标。

我也尝试了How to show a title of document window without icon?中的所有答案,但它们不起作用。我猜小牛队的事情发生了变化。

2 个答案:

答案 0 :(得分:3)

另一种方法是覆盖NSWindow的{​​{1}}类功能,并为要删除的按钮返回standardWindowButton:forStyleMask:

nil

答案 1 :(得分:0)

事实证明,标题栏中的文件图标是NSThemeDocumentButton按钮。奇怪的是,在调用windowControllerDidLoadNib时它并不存在,但它确实存在"稍后"。所以我在我的代码和bam中稍微延迟了,就是这样。

这是我在windowControllerDidLoadNib中的内容:

dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC));
dispatch_after(delayTime, dispatch_get_main_queue(), ^(void){
    NSWindow *window = self.windowForSheet;
    [[window standardWindowButton:NSWindowDocumentIconButton] setImage:nil];
});