Popover in swift 3 on iphone ios

24,729

Change your delegate method to:

func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
    // return UIModalPresentationStyle.FullScreen
    return UIModalPresentationStyle.none
}
Share:
24,729
SamuelTJackson
Author by

SamuelTJackson

Updated on March 14, 2020

Comments

  • SamuelTJackson
    SamuelTJackson over 4 years

    I am trying to make a popover menu with the following code:

    import UIKit
    
    class BeobachtungViewController: UIViewController, UIPopoverPresentationControllerDelegate {
    
    
        @IBAction func addClicked(_ sender: AnyObject) {
            // get a reference to the view controller for the popover
            let popController = UIStoryboard(name: "Personenakte", bundle: nil).instantiateViewController(withIdentifier: "popoverId")
    
            // set the presentation style
            popController.modalPresentationStyle = UIModalPresentationStyle.popover
    
            // set up the popover presentation controller
            popController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.up
            popController.popoverPresentationController?.delegate = self
            popController.popoverPresentationController?.sourceView = sender as! UIView // button
            popController.popoverPresentationController?.sourceRect = sender.bounds
    
            // present the popover
            self.present(popController, animated: true, completion: nil)
        }
    
        // UIPopoverPresentationControllerDelegate method
        func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
            // Force popover style
            return UIModalPresentationStyle.none
        }
    }
    

    This is working on iPad, but, on an iPhone, the popup takes the whole iPhone screen. I just want a small window with an arrow. I found several tutorials but none worked for me.

  • Gopal Devra
    Gopal Devra almost 7 years
    @TonyMkenu Not working in iPhone, please let me know how does it work?
  • Lim Thye Chean
    Lim Thye Chean almost 7 years
    What if you only want one of the controller to be popover not all? I have a situation that I only want one of the controllers to be popover.
  • Murray Sagal
    Murray Sagal over 6 years
    @LimThyeChean The delegate method hands you the controller. You could guard for that one (because you've kept a reference to it) and return accordingly.
  • ndreisg
    ndreisg over 6 years
    It seems like this does not work with a TableViewController as Popover