UIDocumentPickerViewController — iOS-da sənədlərlə iş

Müəllif: IT Sectr Dərc olunub: 2026-07-11 Oxuma vaxtı: 6 dəq

UIDocumentPickerViewController — fayl sistemindən, iCloud Drive və üçüncü tərəf bulud yaddaşlarından sənəd seçmək üçün iOS sistem nəzarətçisidir. Nəzarətçi istənilən tip faylların açılması və idxalı üçün vahid interfeys təmin edir: şəkillər, PDF, mətnlər və audio. Apple Developer Documentation (2025) məlumatına görə, UIDocumentPickerViewController import və export rejimlərini dəstəkləyir və seçilmiş faylları URL vasitəsilə delegat vasitəsilə qaytarır.

Əsas məqamlar

  • UIDocumentPickerViewController — istənilən mənbədən fayl seçmək üçün iOS-da sistem sənəd pickeri.
  • Import rejimi faylı tətbiqin sandboxuna kopyalayır, export rejimi oxumaq üçün URL təqdim edir.
  • UTI filtrləri göstərilən sənəd tiplərini məhdudlaşdırır: PDF, şəkillər, mətn və digərləri.
  • UIDocumentPickerDelegate seçim nəticəsini və fayllara giriş xətalarını idarə edir.
  • Çoxsaylı seçim allowsMultipleSelection bayrağı vasitəsilə bir neçə fayl seçmək üçün dəstəklənir.

UIDocumentPickerViewController nədir?

UIDocumentPickerViewController — sənəd seçimi üçün sistem interfeysi təmin edən UIKit nəzarətçisidir. UIKit framework-ünə daxildir və iOS 8-dən etibarən mövcuddur. Nəzarətçi yerli yaddaş, iCloud Drive və qeydiyyatdan keçmiş üçüncü tərəf bulud xidmətlərini əhatə edən fayl brauzerini göstərir.

Nəzarətçi asinxron işləyir: present çağırışından sonra istifadəçi sistem dialoqunu görür, faylı seçir və nəticə delegat vasitəsilə qaytarılır. Tətbiq seçilmiş fayla giriş üçün xüsusi icazə tələb etmir — sistem pickeri avtomatik olaraq URI-yə müvəqqəti giriş təmin edir.

UIDocumentPickerViewController iPad-ı UIPopoverPresentationController və iPhone üçün adaptiv interfeys vasitəsilə dəstəkləyir. iOS 14-dən etibarən nəzarətçi yenilənmiş dizayn və iPadOS-da sidebar naviqasiya dəstəyi almışdır.

İş rejimləri: import və export

UIDocumentPickerViewController iki əsas rejimdə işləyir, hər biri tətbiqin fayla necə daxil olacağını müəyyən edir. Rejim tapşırıqdan asılı olaraq forOpeningContentTypes və ya forExporting parametri ilə təyin edilir.

Import rejimi (forOpeningContentTypes) seçilmiş faylı tətbiqin sandboxuna kopyalayır. Tətbiq faylın yalnız özünə məxsus surətinə URL alır. Bu təhlükəsiz rejimdir: başqa tətbiqin faylı dəyişdirilmir və surət cari tətbiq tərəfindən tam idarə olunur.

Export rejimi (forExporting) kopyalamadan orijinal fayla URL təqdim edir. Tətbiq faylı link vasitəsilə oxuya bilər, lakin dəyişikliklər geri yazılmır. Bu rejim faylı başqa tətbiqə ötürmək və ya poçtla göndərmək lazım olduqda istifadə olunur. Dəyişiklikləri yazmaq üçün security-scoped URL ilə open rejimi istifadə olunur.

Pickerin qurulması və UTI-ə görə filtrləmə

UTI (Uniform Type Identifier) — Apple ekosistemində məzmun tiplərinin identifikasiya sistemidir. UIDocumentPickerViewController göstərilən faylları forOpeningContentTypes vasitəsilə ötürülən UTI massivinə görə filtrləyir. UTI göstərilməzsə, picker bütün fayl tiplərini göstərir.

  • PDF — com.adobe.pdf. Picker yalnız PDF sənədlərini göstərir.
  • Şəkillər — public.image. JPEG, PNG, HEIC və digər formatları əhatə edir.
  • Mətn — public.plain-text. .txt, .csv və digər mətn fayllarını göstərir.
  • Audio — public.audio. MP3, AAC, WAV və Lossless formatlarını əhatə edir.
  • Video — public.movie. MP4, MOV, AVI və digər video formatlarını göstərir.

Çox tip seçmək üçün [UTType.pdf, UTType.image] massivi ötürülür. iOS 14-dən etibarən Apple sətir sabitləri əvəzinə UTType istifadəsini tövsiyə edir. UIDocumentPickerViewController seçilmiş provayder dəyişdikdə göstərilən tiplərin siyahısını avtomatik yeniləyir.

Kod nümunəsi: Swift-də sənəd seçimi

Implementasiya Swift-də UIDocumentPickerViewController minimaldır: UTI tipləri ilə nəzarətçi nümunəsi yaradın, delegat təyin edin və present çağırın. Fayl seçimindən sonra delegat didPickDocumentsAt metodunda URL massivi alır. Hər URL startAccessingSecurityScopedResource çağırışı tələb edən security-scoped linkdir.

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() }
    // faylı url-dən oxu
}

Security-scoped resurslar

Security-scoped URL oxumadan əvvəl startAccessingSecurityScopedResource çağırışı tələb edir. Bu metod sistemə tətbiqin sandbox xaricindəki fayla müvəqqəti giriş əldə etdiyini bildirir. İş bitdikdən sonra mütləq stopAccessingSecurityScopedResource çağırın, əks halda sistem girişi bloklaya bilər.

UIDocumentPickerDelegate və nəticələrin idarə edilməsi

UIDocumentPickerDelegate fayl seçiminin nəticələrini iki metod vasitəsilə alır: didPickDocumentsAt uğur halında və didPickDocumentsAt ləğv edildikdə. iOS istifadəçi pickeri seçim etmədən bağladıqda avtomatik olaraq ləğv metodunu çağırır.

Xəta idarəetməsi URL-in əlçatanlığının yoxlanılmasını əhatə edir. İstifadəçi iCloud Drive-dan fayl seçibsə, lakin cihaz oflayndırsa, URL əlçatan olmaya bilər. Oxumadan əvvəl FileManager.default.isReadableFile yoxlamaq və istifadəçiyə anlaşılan xəta mesajı göstərmək tövsiyə olunur.

iOS 14+ üçün URL massivi ilə yeni documentPicker:didPickDocumentsAt metodu mövcuddur. Köhnə didPickDocumentAt (tək) metodu deprecated-dir. allowsMultipleSelection söndürülsə belə həmişə massivi idarə edin — Apple vahid handler istifadəsini tövsiyə edir.

iPad-da UIDocumentPickerViewController

iPad UIDocumentPickerViewController üçün xüsusi konfiqurasiya tələb edir. iPad-də picker popover kimi göstərilir və düzgün yerləşdirmə üçün sourceView təyin edilməlidir. SourceView olmadan nəzarətçi iPadOS-da exception ilə çökə bilər.

Popover üçün popoverPresentationController xassəsindən istifadə olunur. Düyməyə və ya cədvəl xanasına bağlamaq üçün sourceView və sourceRect təyin edin. iPhone-da bu kod təsir etmir — iOS avtomatik pickeri tam ekranda göstərir. iPadOS 16-dan etibarən nəzarətçi təkmilləşdirilmiş naviqasiya üçün sidebar və split view dəstəkləyir.

UIDocumentPickerViewController-ın adaptiv dizaynı avtomatik olaraq full-screen (iPhone) və popover (iPad) arasında keçid edir. Tərtibatçı müxtəlif cihazlar üçün ayrıca nəzarətçilər tətbiq etməlidir — iPad üçün popoverPresentationController-ı düzgün konfiqurasiya etmək kifayətdir.

Tez-tez verilən suallar

iOS-da UIDocumentPickerViewController nədir?

UIDocumentPickerViewController — iCloud Drive, yerli yaddaş və üçüncü tərəf bulud xidmətlərindən sənəd seçmək üçün sistem UIKit nəzarətçisidir. Nəzarətçi seçilmiş faylın URL-ni delegat vasitəsilə qaytarır.

UIDocumentPickerViewController vasitəsilə PDF-i necə seçmək olar?

forOpeningContentTypes: [.pdf] ilə nəzarətçi yaradın. Bu, göstərilən faylları yalnız PDF-lərlə məhdudlaşdıracaq. Delegat təyin edin və sistem pickerini göstərmək üçün present çağırın.

Import rejimi export rejimindən nə ilə fərqlənir?

Import rejimi faylı tətbiqin sandboxuna kopyalayır — dəyişikliklər orijinala təsir etmir. Export rejimi kopyalamadan orijinal fayla yalnız oxumaq üçün URL təqdim edir.

iOS-da security-scoped URL nədir?

Security-scoped URL — tətbiqin sandbox xaricindəki fayla keçiddir. Oxumadan əvvəl startAccessingSecurityScopedResource, bitdikdən sonra stopAccessingSecurityScopedResource çağırın.

iPad üçün UIDocumentPickerViewController-ı necə qurmaq olar?

popoverPresentationController-u sourceView və sourceRect ilə konfiqurasiya edin. Bu olmadan iPad-də nəzarətçi exception yarada bilər. iPhone-da popover parametrləri nəzərə alınmır — picker tam ekranda göstərilir.

Nəticə

  • UIDocumentPickerViewController — iOS 8-dən mövcud olan sənəd seçimi üçün sistem nəzarətçisi.
  • Import rejimi faylı tətbiqin sandboxuna kopyalayır, export rejimi orijinala yalnız oxumaq üçün giriş təmin edir.
  • UTI filtrləməsi fayl tiplərini məhdudlaşdırır: PDF, şəkillər, mətn, audio, video və digərləri.
  • UIDocumentPickerDelegate seçim nəticəsini didPickDocumentsAt metodunda URL massivi ilə idarə edir.
  • Security-scoped URL faylı oxumadan əvvəl startAccessingSecurityScopedResource çağırışı tələb edir.
  • iPad konfiqurasiyası düzgün göstərmək üçün popoverPresentationController-ın sourceView ilə qurulmasını əhatə edir.
  • iOS 14+ yenilənmiş dizayn, sidebar və sətir UTI-lər əvəzinə UTType dəstəyi əlavə etdi.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun