Class

UIPopoverPresentationController

An object that manages the display of content in a popover.

Overview

From the time a popover is presented until the time it is dismissed, UIKit uses an instance of this class to manage the presentation behavior. You use instances of this class as-is to configure aspects of the popover appearance and behavior for view controllers whose presentation style is set to popover.

In nearly all cases, you use this class as-is and do not create instances of it directly. UIKit creates an instance of this class automatically when you present a view controller using the popover style. You can retrieve that instance from the presented view controller’s popoverPresentationController property and use it to configure the popover behavior.

If you do not want to configure a popover immediately after presenting a view controller, you can use a delegate object to configure the popover instead. During the presentation process, the popover presentation controller calls various methods of its delegate—an object that conforms to the UIPopoverPresentationControllerDelegate protocol—to ask for information and to inform it about the state of the presentation. Your delegate object can use those methods to configure the popover and adjust its behavior as needed. For information about how to implement a delegate for a popover presentation controller, see UIPopoverPresentationControllerDelegate.

Configuring a View Controller for Display as a Popover

To display a popover, set the presentation style of your view controller to popover, provide an anchor point, and call the present(_:animated:completion:) method. The view controller's popoverPresentationController property contains the object that you use to configure the popover details.

Listing 1 shows an action method that displays a popover when a bar button item is tapped. After loading the view controller and setting its presentation style, the method assigns the bar button item to the popover presentation controller associated with the view controller.

Listing 1

Presenting a popover

@IBAction func displayOptionsForSelectedItem () {
   let storyboard = UIStoryboard(name: "Main", bundle: nil)
   let optionsVC = storyboard.instantiateViewController(
                      withIdentifier: "itemOptionsViewController")   optionsVC.modalPresentationStyle = .popover
   optionsVC.popoverPresentationController?.barButtonItem = optionsControl
   self.present(optionsVC, animated: true) {}}

Configure other properties of the popover presentation controller before calling the present(_:animated:completion:) method. For example, you might want to assign a delegate to manage the presentation and dismissal of the popover.

Topics

Customizing the Popover Behavior

var delegate: UIPopoverPresentationControllerDelegate?

The delegate that handles popover-related messages.

protocol UIPopoverPresentationControllerDelegate

The methods of the UIPopoverPresentationControllerDelegate protocol let you customize the behavior of a popover-based presentation. A popover presentation controller notifies your delegate at appropriate points during the presentation process. You can use the delegate methods to customize this process and respond to changes dynamically.

Configuring the Popover Appearance

var popoverLayoutMargins: UIEdgeInsets

The margins that define the portion of the screen in which it is permissible to display the popover.

var backgroundColor: UIColor?

The color of the popover’s backdrop view.

var passthroughViews: [UIView]?

An array of views that the user can interact with while the popover is visible.

var popoverBackgroundViewClass: UIPopoverBackgroundViewMethods.Type?

The class to use for displaying the popover background content.

var canOverlapSourceViewRect: Bool

A Boolean value indicating whether the popover can overlap its view rectangle.

Specifying the Popover’s Anchor Point

var barButtonItem: UIBarButtonItem?

The bar button item on which to anchor the popover.

var sourceView: UIView?

The view containing the anchor rectangle for the popover.

var sourceRect: CGRect

The rectangle in the specified view in which to anchor the popover.

Configuring the Popover Arrows

var permittedArrowDirections: UIPopoverArrowDirection

The arrow directions that you allow for the popover.

var arrowDirection: UIPopoverArrowDirection

The arrow direction in use by the popover.

Relationships

See Also

Popovers

class UIPopoverBackgroundView

The background appearance for a popover.

protocol UIPopoverBackgroundViewMethods

A set of methods that UIPopoverBackgroundView subclasses must implement.