2016-03-22 13 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