XCODE 11 — завершение работы приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: «- [окно AppDelegate]:

Недавно я обновился до XCODE 11 и познакомился с концепциями SceneDelegate и AppDelegate. Это мой простой код для AppDelegate:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor yellowColor];
    return YES;
}

Но, к сожалению, он падает в следующей строке, как показано на изображении:

введите здесь описание изображения

И показывает следующую ошибку:

введите здесь описание изображения

Помогите, пожалуйста, решить проблему, с которой я столкнулся. Любая помощь будет оценена.


person Fionashoff    schedule 23.04.2020    source источник
comment
Вы можете удалить делегатов экрана, если хотите. Если вам нужны шаги, пожалуйста, дайте мне знать.   -  person Mohit Kumar    schedule 23.04.2020
comment
пожалуйста, скажите в обоих направлениях .. удаление делегатов сцены и устранение этой ошибки тоже   -  person Fionashoff    schedule 23.04.2020


Ответы (2)


Предполагая, что представление вашего корневого контроллера представления прозрачно, здесь можно настроить цвет фона UIWindow в вашем сценарии:

Измените в SceneDelegate.m следующий обратный вызов, как показано:

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
    if (scene.class == UIWindowScene.class) {
        [[(UIWindowScene *) scene windows].firstObject setBackgroundColor:UIColor.yellowColor];
    }
}
person Asperi    schedule 23.04.2020
comment
Большое спасибо ... могу ли я установить цвет фона homeindicator в этом коде? Если да, пожалуйста, помогите мне с этим тоже, и я проголосую и приму .. - person Fionashoff; 23.04.2020
comment
@FionaShoff, нет, вы не можете ... и, кстати, как это связано с исключением вопроса темы? ;) - person Asperi; 23.04.2020
comment
На самом деле я хочу сделать цвет фона домашнего индикатора прозрачным. Я просто хочу показать только строку домашнего индикатора без какого-либо цвета фона. - person Fionashoff; 23.04.2020

Чтобы удалить делегатов экрана:

Перейдите к info.plist и удалите выбранную запись, как показано ниже: введите здесь описание изображения

Удалите файлы ScreenDelegate.h и ScreenDelegate.m из проекта: введите здесь описание изображения

Обновите свой AppDelegate.h до:

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow * window;

@end

И, наконец, удалите делегатов Screen из класса AppDelegates:

введите здесь описание изображения

Надеюсь, это поможет.

Если вы хотите использовать ScreenDelegates, вы можете сослаться на ответ от Asperi.

person Mohit Kumar    schedule 23.04.2020