Come posso cambiare il colore di un UIWindow da una classe separata?
-
19-09-2019 - |
Domanda
Sto cercando di cambiare il colore di un UIWindow sfondo quando un'azione viene inviato al MyController di classe. Tuttavia l'UIWindow risiede nella classe AppDelegate quindi non ho accesso alla variabile di modificarlo usando
window.backgroundColor = [UIColor theColor];
in MyController. Ecco il codice per MyController.m:
@implementation MyController - (IBAction)sliderChanged:(id)sender { //want to call some method to change the UIWindow background color } @end
E qui è il codice per AppDelegate.h:
@interface AppDelegate : NSObject { UIWindow *window; } - (void)changeColorToRed:(int)r Green:(int)g Blue:(int)b; @property (nonatomic, retain) IBOutlet UIWindow *window; @end
Ho cercato di implementare un metodo changeColorToRed ... nella classe AppDelegate perché questo metodo ha accesso al window
variabile, ma non ho avuto modo di chiamare che dal metodo sliderChanged
in MyController.
Come faccio a modificare l'UIWindow * finestra da un'altra classe?
Soluzione
[UIApplication sharedApplication].delegate.window.backgroundColor = [UIColor myColor];
Se c'è solo 1 finestra,
[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor myColor];
Altri suggerimenti
Credo che si potrebbe o:
Fare qualche metodo statico nella classe contenente la variabile della finestra
o
Passare la variabile finestra per la nuova classe.