---
title: UIDocumentPickerViewController
framework: uikit
role: symbol
role_heading: Class
path: uikit/uidocumentpickerviewcontroller
---

# UIDocumentPickerViewController

A view controller that provides access to documents or destinations outside your app’s sandbox.

## Declaration

```swift
@MainActor class UIDocumentPickerViewController
```

## Mentioned in

Providing access to directories

## Overview

Overview Use a document picker view controller to select a document to open or export, and optionally copy. Don’t copy the document if you can avoid it. The document picker operates in two modes: Open a document. The user selects a document. The document picker provides access to the document, and the user can edit the document in place. Optionally, you can specify that the document picker makes a copy of the document, leaving the original unchanged. Export a local document. The user selects a destination. The document picker moves the document, and the user can access it and edit it in place. Optionally, you can specify that the document picker makes a copy of the document, leaving the original unchanged. Work with external documents Both the open and export operations grant access to documents outside your app’s sandbox. This access gives users an unprecedented amount of flexibility when working with their documents. However, it also adds a layer of complexity to your file handling. External documents have the following additional requirements: The open and move operations provide security-scoped URLs for all external documents. Call the startAccessingSecurityScopedResource() method to access or bookmark these documents, and the stopAccessingSecurityScopedResource() method to release them. If you’re using a UIDocument subclass to manage your document, it automatically manages the security-scoped URL for you. Always use file coordinators (see NSFileCoordinator) to read and write to external documents. Always use a file presenter (see NSFilePresenter) when displaying the contents of an external document. Don’t save URLs that the open and move operations provide. You can, however, save a bookmark to these URLs after calling startAccessingSecurityScopedResource() to ensure you have access. Call the bookmarkData(options:includingResourceValuesForKeys:relativeTo:) method and pass in the withSecurityScope option, creating a bookmark that contains a security-scoped URL. For more information about working with external documents, see Providing access to directories and Adding a document browser to your app.

## Topics

### Creating a document picker

- [init(coder:)](uikit/uidocumentpickerviewcontroller/init(coder:).md)
- [init(forExporting:)](uikit/uidocumentpickerviewcontroller/init(forexporting:).md)
- [init(forExporting:asCopy:)](uikit/uidocumentpickerviewcontroller/init(forexporting:ascopy:).md)
- [init(forOpeningContentTypes:)](uikit/uidocumentpickerviewcontroller/init(foropeningcontenttypes:).md)
- [init(forOpeningContentTypes:asCopy:)](uikit/uidocumentpickerviewcontroller/init(foropeningcontenttypes:ascopy:).md)

### Getting the user-selected document

- [delegate](uikit/uidocumentpickerviewcontroller/delegate.md)
- [UIDocumentPickerDelegate](uikit/uidocumentpickerdelegate.md)
- [allowsMultipleSelection](uikit/uidocumentpickerviewcontroller/allowsmultipleselection.md)
- [directoryURL](uikit/uidocumentpickerviewcontroller/directoryurl.md)

### Configuring a document picker

- [shouldShowFileExtensions](uikit/uidocumentpickerviewcontroller/shouldshowfileextensions.md)
- [documentPickerMode](uikit/uidocumentpickerviewcontroller/documentpickermode.md)
- [UIDocumentPickerMode](uikit/uidocumentpickermode.md)

### Deprecated

- [init(documentTypes:in:)](uikit/uidocumentpickerviewcontroller/init(documenttypes:in:).md)
- [init(url:in:)](uikit/uidocumentpickerviewcontroller/init(url:in:).md)
- [init(urls:in:)](uikit/uidocumentpickerviewcontroller/init(urls:in:).md)

### Initializers

- [init(URL:inMode:)](uikit/uidocumentpickerviewcontroller/init(url:inmode:).md)
- [init(URLs:inMode:)](uikit/uidocumentpickerviewcontroller/init(urls:inmode:).md)
- [init(documentTypes:inMode:)](uikit/uidocumentpickerviewcontroller/init(documenttypes:inmode:).md)
- [init(forExportingURLs:)](uikit/uidocumentpickerviewcontroller/init(forexportingurls:).md)
- [init(forExportingURLs:asCopy:)](uikit/uidocumentpickerviewcontroller/init(forexportingurls:ascopy:).md)

## Relationships

### Inherits From

- [UIViewController](uikit/uiviewcontroller.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSExtensionRequestHandling](foundation/nsextensionrequesthandling.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSTouchBarProvider](appkit/nstouchbarprovider.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [UIActivityItemsConfigurationProviding](uikit/uiactivityitemsconfigurationproviding.md)
- [UIAppearanceContainer](uikit/uiappearancecontainer.md)
- [UIContentContainer](uikit/uicontentcontainer.md)
- [UIFocusEnvironment](uikit/uifocusenvironment.md)
- [UIPasteConfigurationSupporting](uikit/uipasteconfigurationsupporting.md)
- [UIResponderStandardEditActions](uikit/uiresponderstandardeditactions.md)
- [UIStateRestoring](uikit/uistaterestoring.md)
- [UITraitChangeObservable](uikit/uitraitchangeobservable-67e94.md)
- [UITraitEnvironment](uikit/uitraitenvironment.md)
- [UIUserActivityRestoring](uikit/uiuseractivityrestoring.md)

## See Also

### Documents and directories

- [Customizing a document-based app’s launch experience](uikit/customizing-a-document-based-app-s-launch-experience.md)
- [Adding a document browser to your app](uikit/adding-a-document-browser-to-your-app.md)
- [Providing access to directories](uikit/providing-access-to-directories.md)
- [Building an app with a document browser](uikit/building-an-app-with-a-document-browser.md)
- [Building a document browser app for custom file formats](uikit/building-a-document-browser-app-for-custom-file-formats.md)
- [UIDocumentViewController](uikit/uidocumentviewcontroller.md)
- [UIDocumentBrowserViewController](uikit/uidocumentbrowserviewcontroller.md)
- [UIDocumentInteractionController](uikit/uidocumentinteractioncontroller.md)
