19

我有一个在 NSWindow 中使用工具栏的应用程序。出于审美原因,我不希望用户能够自定义此工具栏。在 Sierra 中,有一个新的菜单选项可以插入到“菜单 > 视图”中,名为Show Tab Bar. 如何禁用此功能?启用它似乎只会增加工具栏的高度,因为我没有在图标下显示额外的标签。

4

6 回答 6

31

您也可以在 IB 上的 Window 属性检查器上执行此操作

NSWindow 属性检查器

于 2016-09-30T08:17:56.007 回答
15

在 10.12 上,您现在需要在创建窗口时设置以下内容,因为选项卡栏现在默认可用:

[NSWindow setAllowsAutomaticWindowTabbing: NO];

答案在 Swift 和 SwiftUI 中是一样的

func applicationWillFinishLaunching(_ notification: Notification) {
    NSWindow.allowsAutomaticWindowTabbing = false
}

请注意,调用是在类上NSWindow而不是在NSWindow

于 2016-09-11T17:14:57.310 回答
4

在单个窗口调用上禁用选项卡setTabbingMode:

if([window respondsToSelector:@selector(setTabbingMode:)]) {
    // this particular window doesn't support tabbing in Sierra.
    [window setTabbingMode:NSWindowTabbingModeDisallowed];
}
于 2016-11-27T07:35:54.260 回答
4

如果您不想针对最新的框架进行编译,可以在 NSWindowsController 子类中使用以下代码:

迅速:

 override func awakeFromNib() {
     if NSAppKitVersionNumber > 1500 {
        self.window?.setValue(2, forKey: "tabbingMode")
     }
 }

目标-C:

- (void)awakeFromNib {
    if (NSAppKitVersionNumber > 1500) {
        [self.window setValue:[NSNumber numberWithInt:2] forKey:@"tabbingMode"];
    }
}
于 2016-09-21T08:09:34.213 回答
3

斯威夫特 5

在你的NSWindowController

self.window?.tabbingMode = .disallowed
于 2020-04-07T18:41:35.710 回答
3

快速解决方案:

override func awakeFromNib() {
    super.awakeFromNib()
    if #available(OSX 10.12, *) {
        tabbingMode = .disallowed
    }
}
于 2016-12-22T14:13:27.247 回答