Как я могу изменить цвет UIWindow из отдельного класса? - PullRequest
4 голосов
/ 09 января 2010

Я пытаюсь изменить цвет фона окна UIWindow при отправке действия в класс MyController. Однако UIWindow находится в классе AppDelegate, поэтому у меня нет доступа к переменной, чтобы изменить ее с помощью

window.backgroundColor = [UIColor theColor];

в MyController. Вот код для MyController.m:

@implementation MyController
- (IBAction)sliderChanged:(id)sender {
 //want to call some method to change the UIWindow background color
}
@end

А вот код для AppDelegate.h:

@interface AppDelegate : NSObject  {
    UIWindow *window;
}

- (void)changeColorToRed:(int)r Green:(int)g Blue:(int)b;

@property (nonatomic, retain) IBOutlet UIWindow *window;

@end

Я пытался реализовать метод changeColorToRed ... в классе AppDelegate, потому что у этого метода есть доступ к переменной window, но у меня не было возможности вызвать его из метода sliderChanged в MyController.

Как я могу изменить окно UIWindow * из другого класса?

Ответы [ 2 ]

12 голосов
/ 09 января 2010
[UIApplication sharedApplication].delegate.window.backgroundColor = [UIColor myColor];

Если есть только 1 окно,

[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor myColor];
0 голосов
/ 09 января 2010

Я думаю, вы могли бы либо:

Создайте некоторый статический метод в классе, содержащем переменную окна

или

Передать переменную окна новому классу.

...