<!--
{
  "availability" : [
    "iOS: 3.0.0 -",
    "iPadOS: 3.0.0 -",
    "macCatalyst: 13.1.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "MediaPlayer",
  "identifier" : "/documentation/MediaPlayer/MPMediaPickerController",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Media Player"
    ],
    "preciseIdentifier" : "c:objc(cs)MPMediaPickerController"
  },
  "title" : "MPMediaPickerController"
}
-->

# MPMediaPickerController

A specialized view controller that provides a graphical interface for selecting media items.

```
class MPMediaPickerController
```

## Overview

An [`MPMediaPickerController`](/documentation/MediaPlayer/MPMediaPickerController) object, or media item picker, is a specialized view controller that you employ to provide a graphical interface for selecting media items. To display a media item picker, present it modally on an existing view controller. Presenting an [`MPMediaPickerController`](/documentation/MediaPlayer/MPMediaPickerController) in non-modal mode; for example, pushing a [`MPMediaPickerController`](/documentation/MediaPlayer/MPMediaPickerController) onto an existing <doc://com.apple.documentation/documentation/UIKit/UINavigationController> stack causes your app to crash. [`MPMediaItem`](/documentation/MediaPlayer/MPMediaItem) describes media items.

To respond to user selections and to dismiss a media item picker, use the [`MPMediaPickerControllerDelegate`](/documentation/MediaPlayer/MPMediaPickerControllerDelegate) protocol.

> Notes:
> The ``doc://com.apple.mediaplayer/documentation/MediaPlayer/MPMediaPickerController`` class supports portrait mode only. This class doesn’t support subclassing, and don’t modify the view hierarchy, which is private. In a compatible iPad or iPhone app in visionOS, presenting this picker displays an alert notifying the person that picking media items isn’t supported.

## Topics

### Initializing a media item picker

[init](/documentation/MediaPlayer/MPMediaPickerController-init)

Initializes a media item picker for all media types.

[`-  initWithMediaTypes:`](/documentation/MediaPlayer/MPMediaPickerController/init(mediaTypes:))

Initializes a media item picker for specified media types.

### Responding to media item picker selections

[`delegate`](/documentation/MediaPlayer/MPMediaPickerController/delegate)

The delegate for a media item picker.

[`MPMediaPickerControllerDelegate`](/documentation/MediaPlayer/MPMediaPickerControllerDelegate)

The protocol you implement so that a media item picker can respond to a user making media item selections.

### Using a media item picker

[`allowsPickingMultipleItems`](/documentation/MediaPlayer/MPMediaPickerController/allowsPickingMultipleItems)

A Boolean value specifying the default selection behavior for a media item picker.

[`showsCloudItems`](/documentation/MediaPlayer/MPMediaPickerController/showsCloudItems)

A Boolean value specifying whether to display iCloud Media Library items for a media picker.

[`mediaTypes`](/documentation/MediaPlayer/MPMediaPickerController/mediaTypes)

The media types that media item picker presents.

[`prompt`](/documentation/MediaPlayer/MPMediaPickerController/prompt)

A prompt, for the user, that appears above the navigation bar buttons.

[`showsItemsWithProtectedAssets`](/documentation/MediaPlayer/MPMediaPickerController/showsItemsWithProtectedAssets)

A Boolean value that specifies whether the media item picker displays protected assets.

## Relationships

### Conforms To

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

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

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

[`NSCoding`](/documentation/Foundation/NSCoding)

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

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

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

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

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

[`NSTouchBarProvider`](/documentation/AppKit/NSTouchBarProvider)

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

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

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

[`UITraitChangeObservable-67e94`](/documentation/UIKit/UITraitChangeObservable-67e94)

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

[`NSExtensionRequestHandling`](/documentation/Foundation/NSExtensionRequestHandling)

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

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

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

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

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

### Inherits From

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

---

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)