Nach nib Laden mit NSViewController ... wie greife ich auf die NSButton in der Spitze?
-
05-07-2019 - |
Frage
Ich habe subclassed NSViewController mit IBOutlets in eine NSButton in einer sekundären Feder verhakt.
Ich kann die NSViewController instanziiert und die Aussicht in einem NSMenu anwenden - es funktioniert super - aber wie greife ich auf die Schaltfläche, um die Titel zu ändern
Da die NSViewController hat IBOutlets nahm ich an, ich dies durch den Controller tun würde.
//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]];
Alle Hinweise auf, wo man von hier geht?
Bearbeiten, um hinzuzufügen: die toDoViewController Klasse -
@interface toDoViewController : NSViewController {
IBOutlet NSButton *checkBoxButton;
IBOutlet NSButton *toDoButton;
}
@end
Lösung
[viewController [toDoButton setTitle:someStringHere]];
Als interactive fiction Dolmetscher sagen würde: „Das scheint ein Verb zu fehlen.“
Sie haben einen Empfänger (viewController
) und einen vollständigen Nachricht Ausdruck ([toDoButton setTitle:…]
) und Klammern, aber Sie einen Selektor fehlen. Als solches ist dies keine gültige Nachricht Ausdruck.
Es gibt zwei Möglichkeiten:
- Sie meinen, eine Nachricht an den View-Controller zu senden, das Ergebnis der
setTitle:
als Argument übergeben, und Sie den Wähler vergessen. Das finde ich unwahrscheinlich, weil NSButton dersetTitle:
gibt nichts zurück. - Sie meinen die Schaltfläche aus den View-Controller erhalten, dann der Taste eine
setTitle:
Nachricht senden. Unter der Annahme, dass dieser View-Controller ist eine Instanz einer Unterklasse von NSViewController, in dem Sie einetoDoButton
Eigenschaft hinzugefügt haben, verwenden entweder[[viewController toDoButton] setTitle:someStringHere]
oder[viewController.toDoButton setTitle:someStringHere]
.