Come faccio a impostare lo stato di inizializzazione di un NSToolbar utilizzato per una finestra a più pannello delle preferenze?

StackOverflow https://stackoverflow.com/questions/4221489

  •  26-09-2019
  •  | 
  •  

Domanda

Sto cercando di codice di un multiplo finestra del pannello di preferenze con un NSToolbar come si è visto in molte applicazioni Mac. Ci sono alcuni tutorial che fanno questo livello di programmazione popolando la barra degli strumenti, ma che sembra richiedere un sacco di codice "meccanico" che ho pensato di risparmiare impostando l'intera barra degli strumenti in IB. Ogni elemento NSToolbar chiama l'azione sottostante e il tag viene utilizzato per selezionare la vista (riferimento dallo stesso pennino con un'IBOutlet):

-(IBAction)changeViewController:(id) sender {
    NSToolbarItem *tbi = (NSToolbarItem*)sender;
    NSString* label = [tbi label];
    NSInteger tag = [tbi tag];
    [self displayViewController:tag];
    NSWindow* window = [self window];
    [window setTitle:label];
}

Poi ho impostato Autovalidates su ogni NSToolbarItem che darà l'aspetto selezionato / deselezionato sulle voci della barra degli strumenti.

Ora qui è il mio problema: non ero in grado di capire un buon modo per impostare lo stato iniziale. Nel momento in cui ho aperto la finestra nessuno degli elementi della barra degli strumenti è selezionato e non c'è niente di udpate al codice che mi permettesse di selezionare correttamente questo sia. Quello che mi è venuto in mente è questa:

- (void) awakeFromNib { 
    [self displayViewController:kGeneralPrefsTag];
    NSWindow* window = [self window];
    NSToolbar *toolbar = [window toolbar];
    [toolbar setSelectedItemIdentifier:@"generalPreferences"];
    [window setTitle:@"General"];
}

Si tratta di tutte le informazioni ridondanti: 1) Ho bisogno di dichiarare le identificatori di voci per il barra degli strumenti solo per questo 2) I duplicare manualmente il nome del primo pannello delle preferenze per essere in grado di impostare il titolo della finestra.

C'è un modo migliore per inizializzare la barra degli strumenti? Come potrei chiamare il primo elemento della barra degli strumenti in modo che possa invocare l'changeViewControllerAction?

Grazie.

È stato utile?

Soluzione

Sto utilizzando la barra degli strumenti per selezionare le schede diverse e usato il seguente:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [item1 setEnabled: YES];
    [toolbar setSelectedItemIdentifier: @"needItToolbarItem"];

    [item2 setEnabled: YES];
    [item3 setEnabled: YES];
    [item4 setEnabled: YES];
}

Questo sembrava di farmi quello che volevo senza troppa verbosità. Non sono sicuro se questa è la risposta che state cercando, ma sembra come se fossi una strada giusta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top