如何禁用 Sierra 应用程序中的“显示标签栏”菜单选项?

Posted

技术标签:

【中文标题】如何禁用 Sierra 应用程序中的“显示标签栏”菜单选项?【英文标题】:How do I disable the Show Tab Bar menu option in Sierra apps? 【发布时间】:2017-01-16 21:28:48 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

非常感谢。这对我有帮助。 这个屏幕到底在哪里?【参考方案2】:

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

[NSWindow setAllowsAutomaticWindowTabbing: NO];

答案在 Swift 和 SwiftUI 中是一样的

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

请注意,调用是在 NSWindow 类上进行的,而不是在 NSWindow 的实例上进行的

【讨论】:

在 10.15 上,这种方法似乎不再存在。相反,您可以将窗口的tabbingMode 设置为.disallowed。特别将window.tabbingMode = .disallowed 添加到NSApplicationDelegateapplicationDidFinishLaunching 方法似乎有效。 上述评论不正确,似乎他们可能试图在窗口实例而不是 NSWindow 类上调用allowsAutomaticWindowTabbing。在 swift 和 swiftui 中,您仍然可以调用 NSWindow.allowsAutomaticWindowTabbing = false 在所有应用程序窗口中完全删除这些项目,而不是为单个窗口禁用它们。【参考方案3】:

如果您不想针对最新的框架进行编译,可以在 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"];
    

【讨论】:

这是NSAppKitVersion.current.rawValue > NSAppKitVersion.macOS10_12.rawValue Swift 4 @ctietze:我的答案仅在使用旧版本的 Xcode 和 Swift 时才相关【参考方案4】:

要禁用单个窗口上的选项卡,请调用 setTabbingMode:

if([window respondsToSelector:@selector(setTabbingMode:)]) 
    // this particular window doesn't support tabbing in Sierra.
    [window setTabbingMode:NSWindowTabbingModeDisallowed];

【讨论】:

【参考方案5】:

快速解决方案:

override func awakeFromNib() 
    super.awakeFromNib()
    if #available(OSX 10.12, *) 
        tabbingMode = .disallowed
    

【讨论】:

或者,如果您有应用委托,请在创建 NSWindow 后添加行 window.tabbingMode = .disallowed【参考方案6】:

斯威夫特 5

在你的NSWindowController:

self.window?.tabbingMode = .disallowed

【讨论】:

以上是关于如何禁用 Sierra 应用程序中的“显示标签栏”菜单选项?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iMessage iOS 11(或 iOS10、Macos Sierra)中禁用 URL 链接预览

在macOS High Sierra 10.13.3上的Grails中的FixtureException

如何在ios中同时实现标签栏和侧边菜单?

sh 在Sierra(版本2.1)中禁用一堆#$!@

sh 在Sierra(版本2.1)中禁用一堆#$!@

sh 在Sierra(版本2.1)中禁用一堆#$!@