2016-09-08 1 views
11

J'ai une application qui utilise une barre d'outils dans un NSWindow. Je ne veux pas que les utilisateurs puissent personnaliser cette barre d'outils pour des raisons esthétiques. Dans Sierra, il y a une nouvelle option de menu qui est insérée dans "Menu> Vue" appelée Show Tab Bar. Comment puis-je désactiver cela? L'activer semble seulement augmenter la hauteur de la barre d'outils car je n'ai pas d'étiquettes supplémentaires sous les icônes.Comment désactiver l'option de menu Afficher la barre d'onglets dans les applications Sierra?

Répondre

9

Sur 10.12, vous devez définir maintenant ce qui suit lorsque la fenêtre est créée comme Tab Bar est maintenant disponible par défaut:

[NSWindow setAllowsAutomaticWindowTabbing: NO]; 
4

Si vous ne voulez pas compiler contre les derniers cadres, vous pouvez utilisez le code suivant dans vos sous-catégories 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"]; 
    } 
} 
20

Vous pouvez aussi le faire sur IB, sur les attributs de la fenêtre inspecteur

NSWindow attribute inspector

+0

Merci beaucoup. Cela m'a aidé. – Tommy

3

Pour désactiver tabulant sur les fenêtres individuelles appeler setTabbingMode:

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

solution Swift:

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