Отображать UIAlertController поверх UIWindow

У меня есть UIWindow, вложенный выше всех моих навигационных контроллеров (это мини-видеоплеер, который можно смахивать и перетаскивать). Я инициализирую это так:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    let player = CustomWindowClass(frame:UIScreen.mainScreen().bounds)
    var window: UIWindow? {
        set {

        }
        get {

            return player
        }
    }
}

Теперь, когда на странице player есть кнопка, которая должна вызывать UIAlertController. Моя проблема в том, что я не могу presentViewController: напрямую из UIWindow. Я могу использовать:

let rootView = UIApplication.sharedApplication().keyWindow?.rootViewController
rootView?.presentViewController(theAlertController, animated: true, completion: nil)

..но он появляется за моим UIWindow. Я весь день искал, как я могу безопасно отобразить UIAlertController над моим UIWindow, но был с пустыми руками. Какие-либо предложения?


person slider    schedule 10.12.2015    source источник


Ответы (1)


Каков размер возвращаемого массива windows из UIApplication.sharedApplication().windows?

Я предполагаю, что это будет 2, а второе в массиве будет вашим новым окном. Попробуйте изучить каждый window в возвращаемом массиве и попробуйте представить UIAlertViewController в каждом из них, чтобы увидеть, дает ли это желаемый эффект.

например, если возвращаются два windows:

let controller = application.windows[1].rootViewController as UIViewController
controller.presentViewController(theAlertController, animated: true, completion: nil)

Ссылка: Как представить UIAlertView из appDelegate

person Andy Obusek    schedule 10.12.2015
comment
Спасибо, более-менее получилось. Мне также нужно сбросить UIWindow.windowLevel, чтобы он заработал. - person slider; 10.12.2015