Wie kann ich die Farbe eines UIWindow aus einer separaten Klasse ändern?
-
19-09-2019 - |
Frage
Ich versuche, die Hintergrundfarbe eines UIWindows zu ändern, wenn eine Aktion an die Klasse MyController gesendet wird. Der UIWindow liegt jedoch in der AppDelegate -Klasse, sodass ich keinen Zugriff auf die Variable habe, um sie mithilfe zu ändern
window.backgroundColor = [UIColor theColor];
in MyController. Hier ist der Code für MyController.m:
@implementation MyController - (IBAction)sliderChanged:(id)sender { //want to call some method to change the UIWindow background color } @end
Und hier ist der Code für AppDelegate.h:
@interface AppDelegate : NSObject { UIWindow *window; } - (void)changeColorToRed:(int)r Green:(int)g Blue:(int)b; @property (nonatomic, retain) IBOutlet UIWindow *window; @end
Ich habe versucht, eine Methode zu implementieren, die ChangeColorted in der AppDelegate -Klasse implementiert hat, da diese Methode Zugriff auf die Variable hat window
, aber ich hatte keine Möglichkeit, das von der anzurufen sliderChanged
Methode in MyController.
Wie kann ich das Fenster uiWindow * aus einer anderen Klasse ändern?
Lösung
[UIApplication sharedApplication].delegate.window.backgroundColor = [UIColor myColor];
Wenn es nur 1 Fenster gibt,
[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor myColor];
Andere Tipps
Ich denke, Sie könnten entweder:
Machen Sie eine statische Methode in der Klasse, die die Fenstervariable enthält
oder
Übergeben Sie die Fenstervariable an die neue Klasse.