Après le chargement de la pointe avec NSViewController & # 8230; Comment accéder au NSButton dans la plume?
-
05-07-2019 - |
Question
J'ai sous-classé NSViewController avec IBOutlets connecté à un NSButton dans une nib secondaire.
Je peux instancier NSViewController et appliquer la vue dans un NSMenu - cela fonctionne très bien - mais comment puis-je accéder au bouton pour changer son titre?
Étant donné que NSViewController comporte des IBOutlets, j'ai supposé que je le ferais via le contrôleur.
//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]];
Des indications sur où aller à partir d'ici?
Modifier pour ajouter: la classe toDoViewController -
@interface toDoViewController : NSViewController {
IBOutlet NSButton *checkBoxButton;
IBOutlet NSButton *toDoButton;
}
@end
La solution
[viewController [toDoButton setTitle:someStringHere]];
Comme le diraient les interprètes de fiction interactifs, il semble manquer un verbe. & # 8221;
Vous avez un destinataire ( viewController
) et une expression de message complète ( [toDoButton setTitle: & # 8230;]
), ainsi que des crochets, mais il vous manque un sélecteur. En tant que tel, ce n'est pas une expression de message valide.
Il y a deux possibilités:
- Vous voulez envoyer un message au contrôleur de vue en transmettant le résultat de
setTitle:
en tant qu'argument et vous avez oublié le sélecteur. Je trouve cela peu probable, carsetTitle:
de NSButton ne renvoie rien. - Vous voulez obtenir le bouton du contrôleur de vue, puis lui envoyer un message
setTitle:
. En supposant que ce contrôleur de vue soit une instance d'une sous-classe de NSViewController dans laquelle vous avez ajouté une propriététoDoButton
, utilisez[[viewController toDoButton] setTitle: someStringHere]
ou < code> [viewController.toDoButton setTitle: someStringHere] .