<!--
{
  "availability" : [
    "iOS: 8.0.0 -",
    "iPadOS: 8.0.0 -",
    "macCatalyst: 13.1.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UIPrinterPickerController",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(cs)UIPrinterPickerController"
  },
  "title" : "UIPrinterPickerController"
}
-->

# UIPrinterPickerController

A view controller that displays the standard interface for selecting a printer.

```
@MainActor class UIPrinterPickerController
```

## Overview

You can use a printer picker controller to display a list of printers to the user prior to printing a document, photo, or other content. Printer pickers display all pickers normally but you can filter out printers by assigning an appropriate delegate object to the picker before displaying it.

A printer picker controller coordinates the presentation and dismissal of its interface with its associated delegate object. The delegate object is an object that you provide and that conforms to the [`UIPrinterPickerControllerDelegate`](/documentation/UIKit/UIPrinterPickerControllerDelegate) protocol. When the user selects a printer, the picker also notifies the delegate of the selection.

A printer picker controller isn’t a view controller, so you don’t present it the way you do other view controllers. You present the picker using one of the presentation methods of this class. Those methods work with the picker’s delegate object to determine the most appropriate way to present the picker. If the delegate implements the [`printerPickerControllerParentViewController(_:)`](/documentation/UIKit/UIPrinterPickerControllerDelegate/printerPickerControllerParentViewController(_:)) method, the picker presents itself using the view controller returned by that method. Some presentation methods may present the picker using a popover instead.

For more information about the picker delegate methods, see [`UIPrinterPickerControllerDelegate`](/documentation/UIKit/UIPrinterPickerControllerDelegate).

## Topics

### Creating a picker controller

[`+  printerPickerControllerWithInitiallySelectedPrinter:`](/documentation/UIKit/UIPrinterPickerController/init(initiallySelectedPrinter:))

Creates and returns a printer picker with an initially selected printer object.

### Managing the printer picker interface

[`delegate`](/documentation/UIKit/UIPrinterPickerController/delegate)

The delegate for the printer picker controller.

[`UIPrinterPickerControllerDelegate`](/documentation/UIKit/UIPrinterPickerControllerDelegate)

A set of methods for managing the presentation and dismissal of a printer picker interface.

### Presenting and dismissing the picker

[`-  presentAnimated:completionHandler:`](/documentation/UIKit/UIPrinterPickerController/present(animated:completionHandler:))

Presents the picker from a view controller of your app.

[`-  presentFromBarButtonItem:animated:completionHandler:`](/documentation/UIKit/UIPrinterPickerController/present(from:animated:completionHandler:))

Presents the picker in a popover that anchors to the specified bar button item.

[`-  presentFromRect:inView:animated:completionHandler:`](/documentation/UIKit/UIPrinterPickerController/present(from:in:animated:completionHandler:))

Presents the picker in a popover that anchors to a rectangle in the specified view.

[`-  dismissAnimated:`](/documentation/UIKit/UIPrinterPickerController/dismiss(animated:))

Dismisses the picker.

### Getting the selected printer

[`selectedPrinter`](/documentation/UIKit/UIPrinterPickerController/selectedPrinter)

The selected printer.

### Constants

[`CompletionHandler`](/documentation/UIKit/UIPrinterPickerController/CompletionHandler)

The completion handler to execute when dismissing a printer picker controller.

## Relationships

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

### Conforms To

[`Equatable`](/documentation/Swift/Equatable)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`CVarArg`](/documentation/Swift/CVarArg)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`Sendable`](/documentation/Swift/Sendable)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`Hashable`](/documentation/Swift/Hashable)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)