UIDocumentPickerViewController — је системски контролер iOS-а за избор докумената из система датотека, iCloud Drive-а и спољних складишта у облаку. Контролер пружа јединствени интерфејс за отварање и увоз датотека било ког типа: слика, PDF-ова, текстова и аудио записа. Према Apple Developer Documentation (2025), UIDocumentPickerViewController подржава режиме import и export и враћа изабране датотеке у виду URL-ова преко делегата.
Главне тачке
UIDocumentPickerViewController — је UIKit контролер који обезбеђује системски интерфејс за избор докумената. Део је UIKit оквира и доступан је од iOS 8. Контролер приказује претраживач датотека који укључује локално складиште, iCloud Drive и регистроване спољне услуге у облаку.
Контролер ради асинхроно: након позива present, корисник види системски дијалог, бира датотеку и резултат се враћа преко делегата. Апликација не захтева посебне дозволе за приступ изабраној датотеци — системски пикер аутоматски обезбеђује привремени приступ URI-ју.
UIDocumentPickerViewController подржава iPad преко UIPopoverPresentationController-а и адаптивни интерфејс за iPhone. Од iOS 14, контролер је добио ажурирани дизајн и подршку за sidebar навигацију у iPadOS-у.
UIDocumentPickerViewController ради у два главна режима, од којих сваки одређује како апликација приступа датотеци. Режим се поставља кроз параметар forOpeningContentTypes или forExporting у зависности од задатка.
Import режим (forOpeningContentTypes) копира изабрану датотеку у пешчаник апликације. Апликација добија URL сопствене копије датотеке, доступне само њој. Ово је сигуран режим: датотека друге апликације се не мења, а копија је у потпуности контролисана од стране тренутне апликације.
Export режим (forExporting) обезбеђује URL оригиналне датотеке без копирања. Апликација може читати датотеку преко линка, али измене се не чувају назад. Овај режим се користи када је потребно пренети датотеку другој апликацији или је послати поштом. За упис промена користи се режим open са security-scoped URL-ом.
UTI (Uniform Type Identifier) — је систем идентификације типова садржаја у Apple екосистему. UIDocumentPickerViewController филтрира приказане датотеке према UTI низу који се преноси кроз forOpeningContentTypes. Ако UTI није наведен, пикер приказује све типове датотека.
За избор више типова преноси се низ [UTType.pdf, UTType.image]. Од iOS 14, Apple препоручује коришћење UTType уместо стринг константи. UIDocumentPickerViewController аутоматски ажурира листу приказаних типова при промени изабраног провајдера.
Имплементација UIDocumentPickerViewController-а у Swift-у је минимална: креирајте инстанцу контролера са UTI типовима, подесите делегата и позовите present. Након избора датотеке, делегат добија низ URL-ова у методи didPickDocumentsAt. Сваки URL је security-scoped линк који захтева позив startAccessingSecurityScopedResource.
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() }
// читај датотеку из url-а
}
Security-scoped URL захтева позив startAccessingSecurityScopedResource пре читања. Овај метод обавештава систем да апликација добија привремени приступ датотеци ван пешчаника. По завршетку обавезно позовите stopAccessingSecurityScopedResource, иначе систем може блокирати приступ.
UIDocumentPickerDelegate прима резултате избора датотеке кроз две методе: didPickDocumentsAt при успеху и didPickDocumentsAt при отказу. iOS аутоматски позива метод отказа ако је корисник затворио пикер без избора.
Обрада грешака укључује проверу доступности URL-а. Ако је корисник изабрао датотеку из iCloud Drive-а, али је уређај офлајн, URL може бити недоступан. Препоручује се провера FileManager.default.isReadableFile пре читања и приказивање кориснику разумљиве поруке о грешци.
За iOS 14+ доступна је нова метода documentPicker:didPickDocumentsAt са низом URL-ова. Стара метода didPickDocumentAt (појединачна) је deprecated. Увек обрађујте низ, чак и ако је allowsMultipleSelection искључен — Apple препоручује коришћење јединственог хендлера.
iPad захтева посебну конфигурацију UIDocumentPickerViewController-а. На iPad-у пикер се приказује као popover и захтева навођење sourceView за правилно позиционирање. Без sourceView-а контролер може пасти са изузетком на iPadOS-у.
За popover се користи својство popoverPresentationController. Наведите sourceView и sourceRect за причвршћивање за дугме или ћелију табеле. На iPhone-у овај код нема утицаја — iOS аутоматски приказује пикер преко целог екрана. Од iPadOS 16, контролер подржава sidebar и split view за побољшану навигацију.
Адаптивни дизајн UIDocumentPickerViewController-а аутоматски се пребацује између full-screen (iPhone) и popover (iPad). Програмер не мора да имплементира засебне контролере за различите уређаје — довољно је правилно подесити popoverPresentationController за iPad.
Често постављана питања
UIDocumentPickerViewController — је системски UIKit контролер за избор докумената из iCloud Drive-а, локалног складишта и спољних услуга у облаку. Контролер враћа URL изабране датотеке преко делегата.
Креирајте контролер са forOpeningContentTypes: [.pdf]. Ово ће ограничити приказ само на PDF датотеке. Подесите делегата и позовите present за приказ системског пикера.
Import режим копира датотеку у пешчаник апликације — измене не утичу на оригинал. Export режим обезбеђује URL оригиналне датотеке само за читање без копирања.
Security-scoped URL — је линк ка датотеци ван пешчаника апликације. Пре читања позовите startAccessingSecurityScopedResource, по завршетку — stopAccessingSecurityScopedResource.
Подесите popoverPresentationController са sourceView и sourceRect. Без овога на iPad-у контролер може изазвати изузетак. На iPhone-у подешавања popover-а се игноришу — пикер се приказује преко целог екрана.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође