UIWindow, и его содержимое не отображается в Xcode 11 iOS 13. Получение черного экрана

У меня был проект Swift, разработанный в Xcode 10.2, и он работал нормально. Я перенес свой код из Xcode 10.2 в Xcode 11.3. Поскольку после этого мое приложение не работает должным образом. Всякий раз, когда я пытаюсь добавить окно, его содержимое не отображается, и это полностью задний экран.

Я получил эту ошибку в консоли:

- [Window] Ручное добавление представления rootViewController в иерархию представлений больше не поддерживается. Разрешите UIWindow добавить представление rootViewController в саму иерархию представлений.

Вот мой код:

    fileprivate(set) var topOverlayWindow         = UIWindow()

   override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.topOverlayWindow.windowLevel = UIWindow.Level(rawValue: CGFloat.greatestFiniteMagnitude)
    self.topOverlayWindow.backgroundColor = NSUtility.editVideoThemeColor
    self.topOverlayWindow.frame = CGRect(x: 0.0, y: 0.0, width:  56, height: 45)
    self.topOverlayWindow.rootViewController = KAPPDELEGATE?.window?.rootViewController;
    self.topOverlayWindow.alpha = 1.0
    self.topOverlayWindow.isHidden = false
    self.topOverlayWindow.makeKeyAndVisible()
}

person Nishant Sharma    schedule 02.04.2020    source источник
comment
Я нашел решение. Теперь он отлично работает в iOS 12, iOS 13 и Xcode 11 тоже. В приведенном выше коде я просто заменяю этот self.topOverlayWindow.rootViewController = KAPPDELEGATE? .Window? .RootViewController на указанный ниже код self.topOverlayWindow.rootViewController = UIViewController () // Или вы можете передать ссылку на любой новый контроллер. Остальное все в порядке. Ссылка взята отсюда: stackoverflow.com/questions/57060606/   -  person Nishant Sharma    schedule 03.04.2020


Ответы (1)


Я нашел решение. Теперь он отлично работает и в iOS 12, и в iOS 13 из Xcode 11.

В приведенном выше коде я просто заменяю это

self.topOverlayWindow.rootViewController = KAPPDELEGATE?.window?.rootViewController 

с указанным ниже кодом

self.topOverlayWindow.rootViewController = UIViewController()

// Или вы можете передать ссылку на любой новый контроллер. Остальное все в порядке. Реф взял отсюда:

UIWindow не отображается поверх содержимого в iOS 13

person Nishant Sharma    schedule 04.05.2020