2016-03-22 6 views
1

Ich habe eine Popup-Klasse für die Anzeige einiger Nachrichten über meine gesamte App. Ich habe eine Instanz init und es als Kind eines aktuell hinzufügen erscheinen Controller zeigen dann das Popup-Ansicht, wenn ich will:Zeige Popup überall in App wie UIAlertController

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

    popup.show() 
} 

Manchmal ist die aktuelle Ansicht Controller in UINavigationController oder UITabBarController eingebettet ist. Wenn meine Popup-Ansicht auf der gesamten Bildschirmgröße angezeigt wird, ohne von der Navigationsleiste oder der Tableiste abgeschnitten zu werden, muss ich sie als untergeordnetes Element des Navigationscontrollers oder des Tab-Controller hinzufügen. Dies ist ärgerlich, wenn ich mich dazu entscheide, die Controller-Hierarchie zu ändern.

Wie kann ich es einfacher machen, wie ein UIAlertViewController mit:

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

es überall Pop und es ist der einzige Fokus auf dem Bildschirm, ohne die übergeordnete Ansicht in Bezug auf Controller sollte das Popup hat?

Antwort

2

Sie können Ihr Popup im Root-View-Controller des Anwendungsfensters anzeigen.

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

Das hilft! Und was, wenn ich es animieren möchte, "UIView.animateWithDuration" zu verwenden, anstatt es modal zu präsentieren? Ist das Hinzufügen von Popups als Child View Controller die einzige Möglichkeit, die eigene Ansicht zu animieren? – bluenowhere

+1

Wenn Sie nach der aktuellen Ansicht mit benutzerdefinierter Animation suchen ... http://stackoverflow.com/questions/19931710/how-to-custom-modal-view-controller-presenting-animation – raki