我有一个使用NSWindow中的工具栏的应用程序。出于美观原因,我不希望用户能够自定义此工具栏。在Sierra中,有一个新的菜单选项被插入到“菜单 > 视图”中,称为显示标签栏
。如何禁用它?启用它似乎只会增加工具栏的高度,因为我没有额外的标签显示在图标下面。
我有一个使用NSWindow中的工具栏的应用程序。出于美观原因,我不希望用户能够自定义此工具栏。在Sierra中,有一个新的菜单选项被插入到“菜单 > 视图”中,称为显示标签栏
。如何禁用它?启用它似乎只会增加工具栏的高度,因为我没有额外的标签显示在图标下面。
在10.12版本中,由于选项卡栏现在默认可用,因此您需要在创建窗口时设置以下内容:
[NSWindow setAllowsAutomaticWindowTabbing: NO];
在Swift和SwiftUI中答案是一样的。
func applicationWillFinishLaunching(_ notification: Notification) {
NSWindow.allowsAutomaticWindowTabbing = false
}
请注意,该调用是在类 NSWindow
上进行的,而不是在 NSWindow
实例上进行的。
tabbingMode
设置为 .disallowed
。特别是将 window.tabbingMode = .disallowed
添加到 NSApplicationDelegate
的 applicationDidFinishLaunching
方法中似乎有效。 - Steven W. KlassenallowsAutomaticWindowTabbing
而不是在NSWindow类上调用。在Swift和SwiftUI中,您仍然可以调用NSWindow.allowsAutomaticWindowTabbing = false
来完全删除所有应用程序窗口中的这些项目,而不是为单个窗口禁用它们。 - JuJoDi如果要在单个窗口上禁用选项卡,请调用setTabbingMode:
if([window respondsToSelector:@selector(setTabbingMode:)]) {
// this particular window doesn't support tabbing in Sierra.
[window setTabbingMode:NSWindowTabbingModeDisallowed];
}
Swift 5
在您的 NSWindowController
中:
self.window?.tabbingMode = .disallowed
override func awakeFromNib() {
if NSAppKitVersionNumber > 1500 {
self.window?.setValue(2, forKey: "tabbingMode")
}
}
Objective-C:
- (void)awakeFromNib {
if (NSAppKitVersionNumber > 1500) {
[self.window setValue:[NSNumber numberWithInt:2] forKey:@"tabbingMode"];
}
}
NSAppKitVersion.current.rawValue > NSAppKitVersion.macOS10_12.rawValue
。 - ctietzeSwift解决方案:
override func awakeFromNib() {
super.awakeFromNib()
if #available(OSX 10.12, *) {
tabbingMode = .disallowed
}
}
window.tabbingMode = .disallowed
。 - Steven W. Klassen
window.tabbingMode = NSWindowTabbingModeDisallowed
- Elviss Strazdins