Comment puis-je changer la couleur d'un UIWindow d'une classe distincte?
-
19-09-2019 - |
Question
Je suis en train de changer la couleur de fond d'un UIWindow lorsqu'une action est envoyée à la MyController de classe. Cependant, le UIWindow réside dans la classe AppDelegate donc je n'ai pas accès à la variable de la modifier en utilisant
window.backgroundColor = [UIColor theColor];
MyController. Voici le code pour MyController.m:
@implementation MyController - (IBAction)sliderChanged:(id)sender { //want to call some method to change the UIWindow background color } @end
Et voici le code pour AppDelegate.h:
@interface AppDelegate : NSObject { UIWindow *window; } - (void)changeColorToRed:(int)r Green:(int)g Blue:(int)b; @property (nonatomic, retain) IBOutlet UIWindow *window; @end
J'ai essayé de mettre en œuvre une méthode changeColorToRed ... dans la classe AppDelegate parce que cette méthode a accès à la window
variable mais je n'avais aucun moyen d'appeler à partir de la méthode sliderChanged
dans MyController.
Comment puis-je modifier la UIWindow * fenêtre d'une autre classe?
La solution
[UIApplication sharedApplication].delegate.window.backgroundColor = [UIColor myColor];
S'il n'y a que 1 fenêtre,
[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor myColor];
Autres conseils
Je pense que vous pouvez soit:
Faire une méthode statique dans la classe contenant la variable fenêtre
ou
Passez la variable de la fenêtre à la nouvelle classe.