2016-03-27 16 views
2

Ich weiß, ich kann popoverPresentationControllerDidDismissPopover verwenden, aber das wird nur aufgerufen, wenn der Benutzer außerhalb der Popover-Ansicht tippt, um es zu entlassen. Wenn ich das Popover manuell verlasse (self.dismissViewControllerAnimated(true, completion: nil) im ViewController des Popover) passiert nichts.Detect Popover entlassen

+0

Sie können immer eine neue Funktion erstellen, die den Code enthält, den Sie ausführen müssen, und sie in 'popoverPresentationControllerDidDismissPopover' aufrufen und' self.dismissViewControllerAnimated (true, completion: nil) 'aufrufen. –

+1

Ich kann nicht, weil ich den Code im View-Controller unter dem Popover ausgeführt werden muss und wenn ich versuche, das aus dem Popover zu tun, erhalte ich einen Fehler, weil er ein IBOutlet im ersten View-Controller referenziert, der beim Popover gleich null ist ist aktiv. Ich hoffe, Sie können verstehen, was ich meine – Pixel

+0

Dies verwirrte mich auch für ein bisschen, aber der Beispielcode bei http://StackOverflow.com/A/32021691/708928 mit Delegierten war aufschlussreich und nützlich für die Lösung dieses Problems. – Logg

Antwort

1

Popover Dismiss!

Es gibt zwei Möglichkeiten, Popover-Fehlanzeige zu erkennen: 1. Detecting in mainViewController, wo es tatsächlich generiert wurde, meine ich ParentViewController.

die parent als Haupterzeugungs Mit persönlichem

class ViewController: UIViewController, UITableViewDataSource, 
UITableViewDelegate, UIPopoverPresentationControllerDelegate { 

und Umsetzung jetzt dieser Funktion

func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { 
     return .none 
    } 



func popoverPresentationControllerDidDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) { 

     print("Popover dismisssed") 
    } 
  1. in der Steuerung Erkennung verwendet, um hand popOverView gemacht im Storyboard.

    func dismiss() { 
    
    self.dismiss(animated: true, completion: nil) 
    print("DISMISSS") 
    
    } 
    
    @IBAction func cancelClicked(_ sender: Any) { 
    
        dismiss() 
    } 
    

HINWEIS: Storyboards können Sie weitere Details fragen.

+0

Es funktionierte auch für mich. –

Verwandte Themen