Как я могу изменить цвет UIWindow из отдельного класса?
-
19-09-2019 - |
Вопрос
Я пытаюсь изменить цвет фона 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
Я попытался реализовать метод изменен ... в классе AppDelegate, потому что этот метод имеет доступ к переменной window
, но у меня не было возможности назвать это из sliderChanged
Метод в MyController.
Как я могу изменить окно uiwindow * из другого класса?
Решение
[UIApplication sharedApplication].delegate.window.backgroundColor = [UIColor myColor];
Если есть только 1 окно,
[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor myColor];
Другие советы
Я думаю, ты мог бы либо:
Сделайте некоторый статический метод в классе, содержащий переменную окна
или же
Передайте переменную окна в новый класс.
Не связан с StackOverflow