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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top