UIDocumentPickerViewController — nedir, iOS belgeleriyle çalışma

Yazar: IT Sectr Yayınlanma: 2026-07-11 Okuma süresi: 6 dk

UIDocumentPickerViewController, dosya sistemi, iCloud Drive ve üçüncü taraf bulut depolama alanlarından belge seçmek için bir iOS sistem denetleyicisidir. Denetleyici, görüntüler, PDF’ler, metinler ve ses dahil olmak üzere her türden dosyayı açmak ve içe aktarmak için birleşik bir arayüz sağlar. Apple Developer Documentation’a (2025) göre UIDocumentPickerViewController, import ve export modlarını destekler ve seçilen dosyaları bir temsilci aracılığıyla URL referansları olarak döndürür.

Önemli noktalar

  • UIDocumentPickerViewController, herhangi bir kaynaktan dosya seçmek için iOS’ta bir sistem belge seçicisidir.
  • Import mode dosyayı uygulama sanal alanına kopyalar, export mode okumak için bir URL sağlar.
  • UTI filtreleri görüntülenen belge türlerini sınırlar: PDF, görüntüler, metin ve diğerleri.
  • UIDocumentPickerDelegate seçim sonucunu ve dosya erişim hatalarını işler.
  • Multiple selection, birden çok dosya seçmek için allowsMultipleSelection bayrağı aracılığıyla desteklenir.

UIDocumentPickerViewController nedir?

UIDocumentPickerViewController, belge seçmek için bir sistem arayüzü sağlayan bir UIKit denetleyicisidir. UIKit çerçevesinin bir parçasıdır ve iOS 8’den beri kullanılabilir. Denetleyici, yerel depolama, iCloud Drive ve kayıtlı üçüncü taraf bulut hizmetlerini içeren bir dosya tarayıcısı görüntüler.

Denetleyici asenkron çalışır: present çağrıldıktan sonra, kullanıcı bir sistem iletişim kutusu görür, bir dosya seçer ve sonuç temsilci aracılığıyla döndürülür. Uygulama, seçilen dosyaya erişmek için özel izinler gerektirmez — sistem seçicisi otomatik olarak URI’ye geçici erişim sağlar.

UIDocumentPickerViewController, UIPopoverPresentationController aracılığıyla iPad’i ve iPhone için uyarlanabilir bir arayüzü destekler. iOS 14’ten itibaren denetleyici, güncellenmiş bir tasarım ve iPadOS’te kenar çubuğu gezintisi desteği aldı.

Çalışma modları: import ve export

UIDocumentPickerViewController iki ana modda çalışır ve her biri uygulamanın dosyaya nasıl eriştiğini belirler. Mod, göreve bağlı olarak forOpeningContentTypes veya forExporting parametresi aracılığıyla ayarlanır.

Import mode (forOpeningContentTypes), seçilen dosyayı uygulama sanal alanına kopyalar. Uygulama, dosyanın yalnızca kendisinin erişebileceği kendi kopyasına bir URL alır. Bu güvenli bir moddur: başka bir uygulamanın dosyası değiştirilmez ve kopya tamamen mevcut uygulama tarafından kontrol edilir.

Export mode (forExporting), kopyalamadan orijinal dosyaya bir URL sağlar. Uygulama bağlantı aracılığıyla dosyayı okuyabilir, ancak değişiklikler kaydedilmez. Bu mod, bir dosyayı başka bir uygulamaya aktarmak veya e-posta ile göndermek gerektiğinde kullanılır. Değişiklikleri yazmak için, scoped security-scoped URL ile birlikte open modu kullanılır.

Seçici kurulumu ve UTI filtreleme

UTI (Uniform Type Identifier), Apple ekosisteminde içerik türü tanımlama sistemidir. UIDocumentPickerViewController, forOpeningContentTypes aracılığıyla iletilen UTI dizisine göre görüntülenen dosyaları filtreler. Hiçbir UTI belirtilmezse, seçici tüm dosya türlerini gösterir.

  • PDF — com.adobe.pdf. Seçici yalnızca PDF belgelerini gösterir.
  • Görüntüler — public.image. JPEG, PNG, HEIC ve diğer formatları içerir.
  • Metin — public.plain-text. .txt, .csv ve diğer metin dosyalarını gösterir.
  • Ses — public.audio. MP3, AAC, WAV ve Lossless formatlarını içerir.
  • Video — public.movie. MP4, MOV, AVI ve diğer video formatlarını gösterir.

Birden çok tür seçmek için bir dizi [UTType.pdf, UTType.image] iletilir. iOS 14’ten itibaren Apple, dize sabitleri yerine UTType kullanılmasını önerir. UIDocumentPickerViewController, seçilen sağlayıcı değiştiğinde görüntülenen türlerin listesini otomatik olarak günceller.

Kod örneği: Swift’te belge seçimi

Uygulama Swift’te UIDocumentPickerViewController minimaldir: UTI türleriyle bir denetleyici örneği oluşturun, temsilciyi ayarlayın ve present çağrısı yapın. Dosya seçildikten sonra, temsilci didPickDocumentsAt yönteminde bir URL dizisi alır. Her URL, startAccessingSecurityScopedResource çağrısı gerektiren bir security-scoped referanstır.

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() }
    // dosyayı url’den oku
}

Security-Scoped Kaynaklar

Bir security-scoped URL, okumadan önce startAccessingSecurityScopedResource çağrısı gerektirir. Bu yöntem, uygulamanın sanal alan dışındaki bir dosyaya geçici erişim elde ettiğini sisteme bildirir. İşlem tamamlandıktan sonra her zaman stopAccessingSecurityScopedResource çağrısı yapın, aksi takdirde sistem erişimi engelleyebilir.

UIDocumentPickerDelegate ve sonuç işleme

UIDocumentPickerDelegate, dosya seçim sonuçlarını iki yöntem aracılığıyla alır: başarı durumunda didPickDocumentsAt ve iptal durumunda didPickDocumentsAt. Kullanıcı seçim yapmadan seçiciyi kapatırsa, iOS otomatik olarak iptal yöntemini çağrır.

Hata işleme, URL kullanılabilirliğini kontrol etmeyi içerir. Kullanıcı iCloud Drive’dan bir dosya seçtiyse ancak cihaz çevrimdışıysa, URL kullanılamayabilir. Okumadan önce FileManager.default.isReadableFile kontrolü yapılması ve kullanıcıya net bir hata mesajı gösterilmesi önerilir.

iOS 14+ için, URL dizisiyle birlikte yeni bir yöntem documentPicker:didPickDocumentsAt kullanılabilir. Eski yöntem didPickDocumentAt (tek) kullanımdan kaldırılmıştır. allowsMultipleSelection devre dışı olsa bile her zaman diziyi işleyin — Apple tek bir işleyici kullanılmasını önerir.

iPad’de UIDocumentPickerViewController

iPad, UIDocumentPickerViewController’ın özel yapılandırmasını gerektirir. iPad’de seçici bir popover olarak görüntülenir ve doğru konumlandırma için bir sourceView belirtmelidir. sourceView olmadan, denetleyici iPadOS’te bir istisna ile çökebilir.

Popover için popoverPresentationController özelliği kullanılır. Bir düğmeye veya tablo hücresine sabitlemek için sourceView ve sourceRect belirtin. iPhone’da bu kodun hiçbir etkisi yoktur — iOS seçiciyi otomatik olarak tam ekranda gösterir. iPadOS 16’dan itibaren denetleyici, gelişmiş gezinme için kenar çubuğu ve bölünmüş görünümü destekler.

UIDocumentPickerViewController’ın uyarlanabilir tasarımı, tam ekran (iPhone) ve popover (iPad) arasında otomatik olarak geçiş yapar. Geliştiricinin farklı cihazlar için ayrı denetleyiciler uygulaması gerekmez — iPad için popoverPresentationController’ı doğru şekilde yapılandırmak yeterlidir.

Sıkça sorulan sorular

iOS’ta UIDocumentPickerViewController nedir?

UIDocumentPickerViewController, iCloud Drive, yerel depolama ve üçüncü taraf bulut hizmetlerinden belge seçmek için bir sistem UIKit denetleyicisidir. Denetleyici, temsilci aracılığıyla seçilen dosyanın URL’sini döndürür.

UIDocumentPickerViewController ile PDF nasıl seçilir?

forOpeningContentTypes: [.pdf] ile bir denetleyici oluşturun. Bu, görüntülemeyi yalnızca PDF dosyalarıyla sınırlar. Temsilciyi ayarlayın ve sistem seçicisini göstermek için present çağrısı yapın.

Import mode ile export mode arasındaki fark nedir?

Import mode dosyayı uygulama sanal alanına kopyalar — değişiklikler orijinali etkilemez. Export mode kopyalamadan orijinal dosyaya yalnızca okuma için URL sağlar.

iOS’ta security-scoped URL nedir?

Security-scoped URL, uygulama sanal alanının dışındaki bir dosyaya yapılan referanstır. Okumadan önce startAccessingSecurityScopedResource ve tamamlandıktan sonra stopAccessingSecurityScopedResource çağrısı yapın.

UIDocumentPickerViewController iPad için nasıl yapılandırılır?

sourceView ve sourceRect ile popoverPresentationController’ı yapılandırın. Bu olmadan, denetleyici iPad’de bir istisna oluşturabilir. iPhone’da popover ayarları yok sayılır — seçici tam ekranda görüntülenir.

Özet

  • UIDocumentPickerViewController, iOS 8’den beri kullanılabilen belge seçimi için bir iOS sistem denetleyicisidir.
  • Import mode dosyayı uygulama sanal alanına kopyalar; export mode orijinale salt okunur erişim sağlar.
  • UTI filtreleme dosya türlerini sınırlar: PDF, görüntüler, metin, ses, video ve diğerleri.
  • UIDocumentPickerDelegate, URL dizisiyle didPickDocumentsAt yönteminde seçim sonucunu işler.
  • Security-scoped URL, dosyayı okumadan önce startAccessingSecurityScopedResource çağrısı gerektirir.
  • iPad yapılandırması, doğru görüntüleme için sourceView ile popoverPresentationController ayarını içerir.
  • iOS 14+, güncellenmiş bir tasarım, kenar çubuğu ve dize UTI’ler yerine UTType desteği ekledi.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun