我有一个弹出类,用于在整个应用中显示一些消息。 我必须初始化一个实例并将其添加为当前出现的控制器的子项,然后在需要时显示弹出视图:
func popMessage() {
let popup = MyPopup()
self.addChildViewController(popup)
self.view.addSubView(popup.view)
popup.didMoveToParentViewController(self)
popup.show()
}
有时,当前视图控制器嵌入在UINavigationController
或UITabBarController
中。
如果我的弹出视图显示在整个屏幕大小而不被导航栏或标签栏剪切,我必须将其添加为导航控制器或标签栏控制器的子项。当我决定更改控制器层次结构时,这很烦人。
如何使用UIAlertViewController变得更容易:
let popup = MyPopup()
popup.show()
or
self.presentViewController(popup)
在任何地方弹出它并使其成为屏幕上唯一的焦点而不考虑弹出窗口应该具有哪个父视图控制器?
答案 0 :(得分:2)
您可以在应用程序窗口的根视图控制器上显示弹出窗口。
let popUp = MyPopup()
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let appWindow = appDelegate.window
var topViewController = window?.rootViewController
while topViewController?.presentedViewController != nil
{
topViewController = topViewController?.presentedViewController
}
topViewController.presentViewController(popUp, animated: true, completion: nil)