¿Cómo puedo cambiar el color de un UIWindow de una clase separada?
-
19-09-2019 - |
Pregunta
Estoy tratando de cambiar el color de fondo de un UIWindow cuando una acción se envía al myController clase. Sin embargo, el UIWindow reside en la clase AppDelegate así que no tengo acceso a la variable de modificarla mediante
window.backgroundColor = [UIColor theColor];
en myController. Aquí está el código para MyController.m:
@implementation MyController - (IBAction)sliderChanged:(id)sender { //want to call some method to change the UIWindow background color } @end
Y aquí está el código para AppDelegate.h:
@interface AppDelegate : NSObject { UIWindow *window; } - (void)changeColorToRed:(int)r Green:(int)g Blue:(int)b; @property (nonatomic, retain) IBOutlet UIWindow *window; @end
He intentado poner en práctica un método changeColorToRed ... en la clase AppDelegate porque ese método tiene acceso a la window
variables, pero no tenía forma de llamar a que a partir del método sliderChanged
en myController.
¿Cómo puedo modificar el UIWindow * ventana de otra clase?
Solución
[UIApplication sharedApplication].delegate.window.backgroundColor = [UIColor myColor];
Si sólo hay 1 ventana,
[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor myColor];
Otros consejos
Creo que se podría ya sea:
Hacer algún método estático en la clase que contiene la variable de ventana
o
Pase la variable ventana para la nueva clase.