Ответ 1
Это решение работает для меня:
let rootViewController: UIViewController =
UIApplication.sharedApplication().windows.lastObject.rootViewController!!
rootViewController.presentViewController(alert, animated: true, completion: nil)
edit by @galambalazs: причина, по которой она работает, заключается в следующем:
Вы можете захватить окно с самым высоким уровнем окна и представить свой View Controller внутри этого окна (сделав его верхним контроллером просмотра в верхнем окне).
UIApplication.sharedApplication(). windows
Окна в массиве упорядочены сверху вниз по уровню окна,
таким образом, последнее окно в массиве находится поверх всех остальных окон приложения.
Также вы можете установить tintColor этого окна, чтобы он соответствовал вашим приложениям global tintColor.
UIWindow *topWindow = [UIApplication sharedApplication].windows.lastObject;
// we inherit the main window tintColor because topWindow may not have the same
topWindow.tintColor = [UIApplication sharedApplication].delegate.window.tintColor;