Gerarchia di Nstroolbar e View Controller
-
29-10-2019 - |
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?
Soluzione
Strano. Dopo aver lasciato questo per un po ', ho deciso di provarlo. Dopo una pulizia del progetto, ha funzionato tutto come previsto.