Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swift: Popover dismiss callback

There are two UIViewConrollers in my Storyboard: MainViewController and SecondViewController. I'm going to show SecondViewController as a popover when user taps a button called Show Popover:

enter image description here

//MainViewController
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{

    if segue.identifier == "GoToSecondViewControllerSegue"
    {
        var vc = segue.destinationViewController as! SecondViewController
        var controller = vc.popoverPresentationController

        if controller != nil
        {
            controller?.delegate = self
            vc.inputTextDelegate = "I'm a popover!"
        }
    }
}

func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController) {
     println("done")
}

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle
{
    return .None
}

//SecondViewController
@IBAction func dismissPopover(sender: UIButton) {
     dismissViewControllerAnimated(true, completion: nil)
     //This dismisses the popover but does not notify the MainViewConroller
}

The anchor of segue is connected to a button: enter image description here

Now I have two problems:

  1. When I tap the cancel button inside the popover it dismisses the popover but does not trigger popoverPresentationControllerDidDismissPopover inside the MainViewController

  2. How can I pass data from the SecondViewController to the MainViewController, text value of a UITextView for example.

like image 747
Maysam Avatar asked Aug 12 '15 13:08

Maysam


People also ask

How do you dismiss a popover in Swift?

Taps outside of the popover's contents automatically dismiss the popover.


1 Answers

Or, more simply, just call iOS's delegate method manually when you dismiss the popover manually.

    dismissViewControllerAnimated(true, completion: nil)
    popoverPresentationController?.delegate?.popoverPresentationControllerDidDismissPopover?(popoverPresentationController!)
like image 81
Luke Bartolomeo Avatar answered Oct 18 '22 18:10

Luke Bartolomeo