UIDocumentPickerViewController — qu’est-ce que c’est, travail avec les documents iOS

Auteur : IT Sectr Publié le : 2026-07-11 Temps de lecture : 6 min

UIDocumentPickerViewController est un contrôleur système iOS pour sélectionner des documents depuis le système de fichiers, iCloud Drive et les stockages cloud tiers. Le contrôleur fournit une interface unifiée pour ouvrir et importer des fichiers de tout type : images, PDF, textes et audio. Selon la Documentation Développeur Apple (2025), UIDocumentPickerViewController prend en charge les modes import et export et retourne les fichiers sélectionnés sous forme de références URL via un délégué.

Points clés

  • UIDocumentPickerViewController est un sélecteur de documents système dans iOS pour choisir des fichiers depuis n’importe quelle source.
  • Import mode copie le fichier dans le bac à sable de l’application, export mode fournit une URL pour la lecture.
  • Filtres UTI limitent les types de documents affichés : PDF, images, texte et autres.
  • UIDocumentPickerDelegate gère le résultat de la sélection et les erreurs d’accès aux fichiers.
  • Multiple selection est prise en charge via le flag allowsMultipleSelection pour sélectionner plusieurs fichiers.

Qu’est-ce que UIDocumentPickerViewController ?

UIDocumentPickerViewController est un contrôleur UIKit qui fournit une interface système pour sélectionner des documents. Il fait partie du framework UIKit et est disponible depuis iOS 8. Le contrôleur affiche un navigateur de fichiers qui inclut le stockage local, iCloud Drive et les services cloud tiers enregistrés.

Le contrôleur fonctionne de manière asynchrone : après avoir appelé present, l’utilisateur voit une boîte de dialogue système, sélectionne un fichier et le résultat est retourné via le délégué. L’application ne nécessite pas d’autorisations spéciales pour accéder au fichier sélectionné — le sélecteur système fournit automatiquement un accès temporaire à l’URI.

UIDocumentPickerViewController prend en charge iPad via UIPopoverPresentationController et une interface adaptative pour iPhone. Depuis iOS 14, le contrôleur a reçu un design mis à jour et la prise en charge de la navigation par sidebar dans iPadOS.

Modes de fonctionnement : import et export

UIDocumentPickerViewController fonctionne dans deux modes principaux, chacun détermine comment l’application accède au fichier. Le mode est défini via le paramètre forOpeningContentTypes ou forExporting selon la tâche.

Import mode (forOpeningContentTypes) copie le fichier sélectionné dans le bac à sable de l’application. L’application reçoit une URL vers sa propre copie du fichier, accessible uniquement par elle. C’est un mode sécurisé : le fichier d’une autre application n’est pas modifié et la copie est entièrement contrôlée par l’application actuelle.

Export mode (forExporting) fournit une URL vers le fichier original sans le copier. L’application peut lire le fichier via le lien, mais les modifications ne sont pas enregistrées. Ce mode est utilisé lorsqu’on doit transférer un fichier à une autre application ou l’envoyer par courriel. Pour écrire des modifications, le mode open avec scoped security-scoped URL est utilisé.

Configuration du picker et filtrage par UTI

UTI (Uniform Type Identifier) est un système d’identification des types de contenu dans l’écosystème Apple. UIDocumentPickerViewController filtre les fichiers affichés selon le tableau d’UTI passé via forOpeningContentTypes. Si aucune UTI n’est spécifiée, le picker affiche tous les types de fichiers.

  • PDF — com.adobe.pdf. Le picker affiche uniquement les documents PDF.
  • Images — public.image. Inclut JPEG, PNG, HEIC et d’autres formats.
  • Texte — public.plain-text. Affiche les fichiers .txt, .csv et autres.
  • Audio — public.audio. Inclut MP3, AAC, WAV et les formats Lossless.
  • Vidéo — public.movie. Affiche MP4, MOV, AVI et autres formats vidéo.

Pour sélectionner plusieurs types, on passe un tableau [UTType.pdf, UTType.image]. Depuis iOS 14, Apple recommande d’utiliser UTType au lieu de constantes de chaîne. UIDocumentPickerViewController met automatiquement à jour la liste des types affichés lorsque le fournisseur sélectionné change.

Exemple de code : sélection de document en Swift

Implémentation de UIDocumentPickerViewController en Swift est minimale : créer une instance du contrôleur avec des types UTI, définir le délégué et appeler present. Après la sélection du fichier, le délégué reçoit un tableau d’URLs dans la méthode didPickDocumentsAt. Chaque URL est une référence security-scoped nécessitant l’appel de startAccessingSecurityScopedResource.

swift
let picker = UIDocumentPickerViewController(
    forOpeningContentTypes: [.pdf, .image],
    asCopy: true
)
picker.delegate = self
picker.allowsMultipleSelection = false
present(picker, animated: true)

// MARK: - UIDocumentPickerDelegate
func documentPicker(
    _ controller: UIDocumentPickerViewController,
    didPickDocumentsAt urls: [URL]
) {
    guard let url = urls.first else { return }
    url.startAccessingSecurityScopedResource()
    defer { url.stopAccessingSecurityScopedResource() }
    // lire le fichier depuis l’url
}

Ressources Security-Scoped

Une URL security-scoped nécessite l’appel de startAccessingSecurityScopedResource avant la lecture. Cette méthode indique au système que l’application obtient un accès temporaire à un fichier en dehors du bac à sable. Après avoir terminé, appelez toujours stopAccessingSecurityScopedResource, sinon le système peut bloquer l’accès.

UIDocumentPickerDelegate et gestion des résultats

UIDocumentPickerDelegate reçoit les résultats de la sélection de fichiers via deux méthodes : didPickDocumentsAt en cas de succès et didPickDocumentsAt en cas d’annulation. iOS appelle automatiquement la méthode d’annulation si l’utilisateur ferme le picker sans effectuer de sélection.

La gestion des erreurs inclut la vérification de la disponibilité de l’URL. Si l’utilisateur a sélectionné un fichier depuis iCloud Drive mais que l’appareil est hors ligne, l’URL peut être indisponible. Il est recommandé de vérifier FileManager.default.isReadableFile avant la lecture et d’afficher à l’utilisateur un message d’erreur clair.

Pour iOS 14+, une nouvelle méthode documentPicker:didPickDocumentsAt avec un tableau d’URLs est disponible. L’ancienne méthode didPickDocumentAt (unique) est obsolète. Traitez toujours le tableau, même si allowsMultipleSelection est désactivé — Apple recommande d’utiliser un seul gestionnaire.

UIDocumentPickerViewController sur iPad

iPad nécessite une configuration spéciale de UIDocumentPickerViewController. Sur iPad, le picker s’affiche comme un popover et doit spécifier un sourceView pour un positionnement correct. Sans sourceView, le contrôleur peut planter avec une exception sur iPadOS.

Pour le popover, la propriété popoverPresentationController est utilisée. Spécifiez sourceView et sourceRect pour l’ancrer à un bouton ou une cellule de tableau. Sur iPhone, ce code n’a aucun effet — iOS affiche automatiquement le picker en plein écran. Depuis iPadOS 16, le contrôleur prend en charge la sidebar et la vue fractionnée pour une navigation améliorée.

Le design adaptatif de UIDocumentPickerViewController bascule automatiquement entre plein écran (iPhone) et popover (iPad). Le développeur n’a pas besoin d’implémenter des contrôleurs séparés pour différents appareils — il suffit de configurer correctement le popoverPresentationController pour iPad.

Foire aux questions

Qu’est-ce que UIDocumentPickerViewController dans iOS ?

UIDocumentPickerViewController est un contrôleur UIKit système pour sélectionner des documents depuis iCloud Drive, le stockage local et les services cloud tiers. Le contrôleur retourne l’URL du fichier sélectionné via le délégué.

Comment sélectionner un PDF avec UIDocumentPickerViewController ?

Créez un contrôleur avec forOpeningContentTypes: [.pdf]. Cela limitera l’affichage aux seuls fichiers PDF. Définissez le délégué et appelez present pour afficher le sélecteur système.

Quelle est la différence entre import mode et export mode ?

Import mode copie le fichier dans le bac à sable de l’application — les modifications n’affectent pas l’original. Export mode fournit une URL vers le fichier original en lecture seule sans copie.

Qu’est-ce qu’une URL security-scoped dans iOS ?

Une URL security-scoped est une référence à un fichier en dehors du bac à sable de l’application. Appelez startAccessingSecurityScopedResource avant la lecture et stopAccessingSecurityScopedResource après avoir terminé.

Comment configurer UIDocumentPickerViewController pour iPad ?

Configurez popoverPresentationController avec sourceView et sourceRect. Sans cela, le contrôleur peut lever une exception sur iPad. Sur iPhone, les paramètres popover sont ignorés — le picker s’affiche en plein écran.

Résumé

  • UIDocumentPickerViewController est un contrôleur système iOS pour la sélection de documents, disponible depuis iOS 8.
  • Import mode copie le fichier dans le bac à sable de l’app ; export mode fournit un accès en lecture seule à l’original.
  • Filtrage UTI limite les types de fichiers : PDF, images, texte, audio, vidéo et autres.
  • UIDocumentPickerDelegate gère le résultat de la sélection dans la méthode didPickDocumentsAt avec un tableau d’URLs.
  • URL security-scoped nécessite l’appel de startAccessingSecurityScopedResource avant la lecture du fichier.
  • Configuration iPad inclut la configuration de popoverPresentationController avec sourceView pour un affichage correct.
  • iOS 14+ a ajouté un design mis à jour, une sidebar et la prise en charge de UTType au lieu des UTI en chaîne.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi