Como posso mudar a cor de uma UIWindow de uma classe separada?
-
19-09-2019 - |
Pergunta
Estou tentando alterar a cor de fundo de uma UIWindow quando uma ação é enviada ao MyController de classe. No entanto, a UIWindow reside na classe appdelegate, então não tenho acesso à variável para modificá -la usando
window.backgroundColor = [UIColor theColor];
no MyController. Aqui está o código para mycontroller.m:
@implementation MyController - (IBAction)sliderChanged:(id)sender { //want to call some method to change the UIWindow background color } @end
E aqui está o 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
Tentei implementar um método ChanGecolortored ... na classe AppDelegate porque esse método tem acesso à variável window
, mas eu não tinha como chamar isso do sliderChanged
Método no MyController.
Como posso modificar a janela UiWindow * de outra classe?
Solução
[UIApplication sharedApplication].delegate.window.backgroundColor = [UIColor myColor];
Se houver apenas 1 janela,
[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor myColor];
Outras dicas
Eu acho que você poderia:
Faça algum método estático na classe que contém a variável da janela
ou
Passe a variável da janela para a nova classe.