UIDocumentPickerViewController — bekerja dengan dokumen di iOS

Penulis: IT Sectr Diterbitkan: 2026-07-11 Waktu membaca: 6 mnt

UIDocumentPickerViewController — adalah kontroler sistem iOS untuk memilih dokumen dari sistem file, iCloud Drive, dan penyimpanan cloud pihak ketiga. Kontroler menyediakan antarmuka terpadu untuk membuka dan mengimpor file dalam bentuk apa pun: gambar, PDF, teks, dan audio. Menurut Apple Developer Documentation (2025), UIDocumentPickerViewController mendukung mode import dan export dan mengembalikan file yang dipilih sebagai URL melalui delegasi.

Poin Penting

  • UIDocumentPickerViewController — pemilih dokumen sistem di iOS untuk memilih file dari sumber mana pun.
  • Mode Import menyalin file ke sandbox aplikasi, mode export menyediakan URL untuk dibaca.
  • Filter UTI membatasi jenis dokumen yang ditampilkan: PDF, gambar, teks, dan lainnya.
  • UIDocumentPickerDelegate menangani hasil pemilihan dan kesalahan akses file.
  • Pemilihan ganda didukung melalui flag allowsMultipleSelection untuk memilih beberapa file.

Apa itu UIDocumentPickerViewController?

UIDocumentPickerViewController — adalah kontroler UIKit yang menyediakan antarmuka sistem untuk memilih dokumen. Ini adalah bagian dari framework UIKit dan tersedia sejak iOS 8. Kontroler menampilkan browser file yang mencakup penyimpanan lokal, iCloud Drive, dan layanan cloud pihak ketiga yang terdaftar.

Kontroler bekerja secara asinkron: setelah memanggil present, pengguna melihat dialog sistem, memilih file, dan hasilnya dikembalikan melalui delegasi. Aplikasi tidak memerlukan izin khusus untuk mengakses file yang dipilih — pemilih sistem secara otomatis memberikan akses sementara ke URI.

UIDocumentPickerViewController mendukung iPad melalui UIPopoverPresentationController dan antarmuka adaptif untuk iPhone. Mulai iOS 14, kontroler menerima desain yang diperbarui dan dukungan navigasi sidebar di iPadOS.

Mode kerja: import dan export

UIDocumentPickerViewController bekerja dalam dua mode utama, yang masing-masing menentukan bagaimana aplikasi mengakses file. Mode diatur melalui parameter forOpeningContentTypes atau forExporting tergantung pada tugas.

Mode Import (forOpeningContentTypes) menyalin file yang dipilih ke sandbox aplikasi. Aplikasi menerima URL salinan file miliknya sendiri, yang hanya dapat diakses olehnya. Ini adalah mode aman: file aplikasi lain tidak dimodifikasi, dan salinan sepenuhnya dikendalikan oleh aplikasi saat ini.

Mode Export (forExporting) menyediakan URL ke file asli tanpa menyalin. Aplikasi dapat membaca file melalui tautan, tetapi perubahan tidak disimpan kembali. Mode ini digunakan saat perlu mentransfer file ke aplikasi lain atau mengirimkannya melalui email. Untuk menulis perubahan, digunakan mode open dengan URL security-scoped.

Mengonfigurasi picker dan memfilter berdasarkan UTI

UTI (Uniform Type Identifier) — adalah sistem identifikasi jenis konten di ekosistem Apple. UIDocumentPickerViewController memfilter file yang ditampilkan berdasarkan array UTI yang dikirim melalui forOpeningContentTypes. Jika UTI tidak ditentukan, picker menampilkan semua jenis file.

  • PDF — com.adobe.pdf. Picker hanya menampilkan dokumen PDF.
  • Gambar — public.image. Mencakup JPEG, PNG, HEIC, dan format lainnya.
  • Teks — public.plain-text. Menampilkan file .txt, .csv, dan file teks lainnya.
  • Audio — public.audio. Mencakup MP3, AAC, WAV, dan format Lossless.
  • Video — public.movie. Menampilkan MP4, MOV, AVI, dan format video lainnya.

Untuk memilih beberapa jenis, array [UTType.pdf, UTType.image] dikirimkan. Mulai iOS 14, Apple merekomendasikan penggunaan UTType sebagai pengganti konstanta string. UIDocumentPickerViewController secara otomatis memperbarui daftar jenis yang ditampilkan saat penyedia yang dipilih berubah.

Contoh kode: memilih dokumen di Swift

Implementasi UIDocumentPickerViewController di Swift minimal: buat instance kontroler dengan tipe UTI, atur delegasi, dan panggil present. Setelah memilih file, delegasi menerima array URL dalam metode didPickDocumentsAt. Setiap URL adalah tautan security-scoped yang memerlukan panggilan 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() }
    // baca file dari url
}

Sumber daya security-scoped

URL security-scoped memerlukan panggilan startAccessingSecurityScopedResource sebelum membaca. Metode ini memberi tahu sistem bahwa aplikasi mendapatkan akses sementara ke file di luar sandbox. Setelah selesai, pastikan untuk memanggil stopAccessingSecurityScopedResource, jika tidak, sistem dapat memblokir akses.

UIDocumentPickerDelegate dan menangani hasil

UIDocumentPickerDelegate menerima hasil pemilihan file melalui dua metode: didPickDocumentsAt saat berhasil dan didPickDocumentsAt saat dibatalkan. iOS secara otomatis memanggil metode pembatalan jika pengguna menutup picker tanpa memilih.

Penanganan kesalahan mencakup pemeriksaan ketersediaan URL. Jika pengguna memilih file dari iCloud Drive tetapi perangkat offline, URL mungkin tidak tersedia. Disarankan untuk memeriksa FileManager.default.isReadableFile sebelum membaca dan menampilkan pesan kesalahan yang dapat dipahami kepada pengguna.

Untuk iOS 14+, metode baru documentPicker:didPickDocumentsAt dengan array URL tersedia. Metode lama didPickDocumentAt (tunggal) sudah tidak digunakan lagi. Selalu tangani array, bahkan jika allowsMultipleSelection dinonaktifkan — Apple merekomendasikan penggunaan satu handler terpadu.

UIDocumentPickerViewController di iPad

iPad memerlukan konfigurasi khusus UIDocumentPickerViewController. Di iPad, picker ditampilkan sebagai popover dan perlu menentukan sourceView untuk posisi yang benar. Tanpa sourceView, kontroler dapat crash dengan exception di iPadOS.

Untuk popover, properti popoverPresentationController digunakan. Tentukan sourceView dan sourceRect untuk menambatkan ke tombol atau sel tabel. Di iPhone, kode ini tidak berpengaruh — iOS secara otomatis menampilkan picker dalam layar penuh. Mulai iPadOS 16, kontroler mendukung sidebar dan split view untuk navigasi yang lebih baik.

Desain adaptif UIDocumentPickerViewController secara otomatis beralih antara full-screen (iPhone) dan popover (iPad). Pengembang tidak perlu mengimplementasikan kontroler terpisah untuk perangkat yang berbeda — cukup mengonfigurasi popoverPresentationController dengan benar untuk iPad.

Pertanyaan Umum

Apa itu UIDocumentPickerViewController di iOS?

UIDocumentPickerViewController — adalah kontroler UIKit sistem untuk memilih dokumen dari iCloud Drive, penyimpanan lokal, dan layanan cloud pihak ketiga. Kontroler mengembalikan URL file yang dipilih melalui delegasi.

Bagaimana cara memilih PDF melalui UIDocumentPickerViewController?

Buat kontroler dengan forOpeningContentTypes: [.pdf]. Ini akan membatasi tampilan hanya ke file PDF. Atur delegasi dan panggil present untuk menampilkan pemilih sistem.

Apa perbedaan antara mode import dan mode export?

Mode Import menyalin file ke sandbox aplikasi — perubahan tidak memengaruhi file asli. Mode Export menyediakan URL ke file asli hanya untuk dibaca tanpa menyalin.

Apa itu URL security-scoped di iOS?

URL security-scoped — adalah tautan ke file di luar sandbox aplikasi. Sebelum membaca, panggil startAccessingSecurityScopedResource, setelah selesai — stopAccessingSecurityScopedResource.

Bagaimana cara mengonfigurasi UIDocumentPickerViewController untuk iPad?

Konfigurasikan popoverPresentationController dengan sourceView dan sourceRect. Tanpa ini, di iPad kontroler dapat menyebabkan exception. Di iPhone, pengaturan popover diabaikan — picker ditampilkan dalam layar penuh.

Ringkasan

  • UIDocumentPickerViewController — kontroler sistem iOS untuk pemilihan dokumen, tersedia sejak iOS 8.
  • Mode Import menyalin file ke sandbox aplikasi, mode export menyediakan akses hanya-baca ke file asli.
  • Filter UTI membatasi jenis file: PDF, gambar, teks, audio, video, dan lainnya.
  • UIDocumentPickerDelegate menangani hasil pemilihan dalam metode didPickDocumentsAt dengan array URL.
  • URL security-scoped memerlukan panggilan startAccessingSecurityScopedResource sebelum membaca file.
  • Konfigurasi iPad mencakup pengaturan popoverPresentationController dengan sourceView untuk tampilan yang benar.
  • iOS 14+ menambahkan desain yang diperbarui, sidebar, dan dukungan UTType sebagai pengganti UTI string.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga