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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top