2010-01-09 2 views
3

J'essaie de changer la couleur d'arrière-plan d'une UIWindow lorsqu'une action est envoyée à la classe MyController. Cependant, le UIWindow réside dans la classe AppDelegate donc je n'ai pas accès à la variable à modifier à l'aideComment puis-je changer la couleur d'une UIWindow d'une classe séparée?

window.backgroundColor = [UIColor theColor]; 

dans 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 variable window, mais je n'avais aucun moyen d'appeler cela à partir de la méthode sliderChanged dans MyController.

Comment puis-je modifier la fenêtre UIWindow * d'une autre classe?

Répondre

9
[UIApplication sharedApplication].delegate.window.backgroundColor = [UIColor myColor]; 

S'il y a seulement 1 fenêtre,

[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor myColor]; 
0

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.

Questions connexes