Domanda

Ho la seguente gerarchia di classe:

NSViewController
  MyGeneralViewController
    ViewControllerA
    ViewControllerB

MyGeneralViewController contiene un codice comune utilizzato da entrambi ViewControllerA e ViewControllerB. Un pezzo di codice comune è la creazione di un NSToolbar e l'implementazione dei metodi di protocollo necessari per NSToolbarDelegate.

Uno dei pulsanti nella barra degli strumenti è un pulsante che consente all'utente di aprire un file NSTextView In una finestra separata (più immobili, funzionalità aggiuntive per lavorare con parole chiave ecc.).

Il metodo per questo è:

- (IBAction) openTextWindow: (id) sender {

    [self setTextWindowController: [[TextWindowController alloc] init]];
    [[self textWindowController] showWindow];

}

Questo pulsante della barra degli strumenti dovrebbe essere disponibile solo per la vista controllata da ViewControllerA. Il mio ragionamento era che se implesso il openTextWindow metodo solo per ViewControllerA, il pulsante della barra degli strumenti verrebbe a grigio (non disponibile) per la vista controllata da ViewControllerB, poiché il sistema di runtime aumenterebbe la gerarchia di classe per cercare il metodo definito per la barbatura degli strumenti e non trovarlo.

Questo sembra non essere così. Quando impledo il metodo con MyGeneralViewController, il pulsante è sempre disponibile (come previsto ma non quello che voglio). Ma quando lo impledo solo per ViewControllerA Non è mai disponibile.

Mi manca qualcosa o è così che dovrebbe funzionare?

È stato utile?

Soluzione

Strano. Dopo aver lasciato questo per un po ', ho deciso di provarlo. Dopo una pulizia del progetto, ha funzionato tutto come previsto.

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