Dopo aver caricato il pennino con NSViewController & # 8230; come posso accedere al NSButton nel pennino?
-
05-07-2019 - |
Domanda
Ho eseguito la sottoclasse di NSViewController con IBOutlets collegati a un NSButton in un pennino secondario.
Posso creare un'istanza di NSViewController e applicare la vista in un menu NSM - funziona benissimo - ma come posso accedere al pulsante per cambiarne il titolo?
Dato che NSViewController ha IBOutlet, ho pensato che lo avrei fatto tramite il controller.
//this part works great
NSViewController *viewController = [[toDoViewController alloc] initWithNibName:@"toDoView" bundle:nil];
NSView *newView = [viewController view];
newMenuItem.view = newView;
//this part not so much
[viewController [toDoButton setTitle:someStringHere]];
Qualche suggerimento su dove andare da qui?
Modifica per aggiungere: la classe toDoViewController -
@interface toDoViewController : NSViewController {
IBOutlet NSButton *checkBoxButton;
IBOutlet NSButton *toDoButton;
}
@end
Soluzione
[viewController [toDoButton setTitle:someStringHere]];
Come direbbero gli interpreti della fiction interattiva, "Sembra che manchi un verbo".
Hai un ricevitore ( viewController
) e un'espressione di messaggio completa ( [toDoButton setTitle:…]
) e parentesi, ma manca un selettore. Pertanto, questa non è un'espressione di messaggio valida.
Esistono due possibilità:
- Intendi inviare un messaggio al controller della vista, passando il risultato di
setTitle:
come argomento, e hai dimenticato il selettore. Lo trovo improbabile, perchésetTitle:
di NSButton non restituisce nulla. - Intendi ottenere il pulsante dal controller di visualizzazione, quindi inviare al pulsante un messaggio
setTitle:
. Supponendo che questo controller di visualizzazione sia un'istanza di una sottoclasse di NSViewController in cui è stata aggiunta una proprietàtoDoButton
, utilizzare[[viewController toDoButton] setTitle: someStringHere]
o < codice> [viewController.toDoButton setTitle: someStringHere] .