Как отключить параметр меню "Показать панель табуляции" в приложениях Sierra?

У меня есть приложение, которое использует панель инструментов в NSWindow. Я не хочу, чтобы пользователи могли настраивать эту панель по эстетическим соображениям. В Сьерре есть новый пункт меню, который вводится в "Меню > Вид" под названием Show Tab Bar. Как отключить это? Включение этого только, кажется, увеличивает высоту панели инструментов, поскольку у меня нет дополнительных ярлыков, показываемых под значками.

Ответ 1

В 10.12 вам нужно установить следующее, когда окно создается, поскольку панель вкладок теперь доступна по умолчанию:

[NSWindow setAllowsAutomaticWindowTabbing: NO];

Ответ 2

Вы также можете сделать это в IB, в инспекторе атрибутов Windows

Инспектор атрибутов NSWindow

Ответ 3

Если вы не хотите компилироваться в отношении последних фреймворков, вы можете использовать следующий код в подклассах NSWindowsController:

Swift:

 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"];
    }
}

Ответ 4

Чтобы отключить табуляцию на отдельных вызовах Windows setTabbingMode:

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

Ответ 5

Решение Swift:

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