2016-03-22 15 views
1

我有一個彈出式類,用於在整個應用程序中顯示一些消息。 我必須初始化實例,並將其添加爲當前出現控制器的孩子則表明,每當我想要的彈出式視圖:像UIAlertController在應用程序中隨處顯示彈出式菜單

func popMessage() { 
    let popup = MyPopup() 
    self.addChildViewController(popup) 
    self.view.addSubView(popup.view) 
    popup.didMoveToParentViewController(self) 

    popup.show() 
} 

有時當前視圖控制器嵌入UINavigationControllerUITabBarController。 如果我的彈出視圖以整個屏幕大小顯示而不被導航欄或標籤欄剪切,我必須將其添加爲導航控制器或標籤欄控制器的子項。當我決定更改控制器層次結構時,這很煩人。

我怎樣才能更容易喜歡使用UIAlertViewController:

let popup = MyPopup() 
popup.show() 
or 
self.presentViewController(popup) 

隨時隨地彈出並使其唯一的焦點在屏幕上沒有關於它的父視圖控制器彈出應該有?

回答

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) 
+0

這有幫助!如果我想用動畫使用'UIView.animateWithDuration'來彈出它,而不是以模態方式呈現它呢?是否將彈出式窗口添加爲子視圖控制器是將其自己的視圖設置爲動畫的唯一方法? – bluenowhere

+1

如果你正在尋找與自定義動畫的現在看... http://stackoverflow.com/questions/19931710/how-to-custom-modal-view-controller-presenting-animation – raki

相關問題