Después de cargar la pluma con NSViewController ... ¿cómo accedo al botón NSB en la punta?
-
05-07-2019 - |
Pregunta
He subclasificado NSViewController con IBOutlets enganchados en un NSButton en una plumilla secundaria.
Puedo crear una instancia del NSViewController y aplicar la vista en un NSMenu; funciona bien, pero ¿cómo accedo al botón para cambiar su título?
Dado que NSViewController tiene IBOutlets, asumí que lo haría a través del controlador.
//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]];
¿Algún indicador sobre dónde ir desde aquí?
Editar para agregar: la clase toDoViewController -
@interface toDoViewController : NSViewController {
IBOutlet NSButton *checkBoxButton;
IBOutlet NSButton *toDoButton;
}
@end
Solución
[viewController [toDoButton setTitle:someStringHere]];
Como dirían los intérpretes de ficción interactiva, "Parece que falta un verbo".
Tienes un receptor ( viewController
) y una completa expresión-mensaje ( [toDoButton setTitle:…]
), y corchetes, pero te falta un selector. Como tal, esto no es una expresión-mensaje válida.
Hay dos posibilidades:
- Quiere enviar un mensaje al controlador de vista, pasando el resultado de
setTitle:
como su argumento, y olvidó el selector. Lo encuentro poco probable, porque elsetTitle:
de NSButton no devuelve nada. - Quiere obtener el botón del controlador de vista y luego enviar un mensaje
setTitle:
al botón. Suponiendo que este controlador de vista es una instancia de una subclase de NSViewController en la que ha agregado una propiedadtoDoButton
, use[[viewController toDoButton] setTitle: someStringHere]
o < código> [viewController.toDoButton setTitle: someStringHere] .