UIDocumentInteractionController — је iOS контролер за преглед докумената и дељење датотека између апликација. Он имплементира функцију Open In, омогућавајући кориснику да отвори датотеку у било којој компатибилној апликацији, пошаље је имејлом или сачува у облаку. Према Apple Developer Documentation (2025), контролер такође подржава уграђени Preview за преглед PDF-а, слика и канцеларијских докумената.
Главне тачке
UIDocumentInteractionController — је UIKit класа која пружа системски интерфејс за рад са документима. За разлику од UIDocumentPickerViewController-а који бира датотеке, овај контролер ради са већ постојећом датотеком апликације и нуди кориснику радње: преглед, отварање у другој апликацији, штампање или слање.
Контролер није ViewController — не позива се преко present. Уместо тога, приказује системски мени радњи путем методе presentOptionsMenu или presentPreview. Мени приказује све апликације регистроване за обраду овог типа датотеке.
UIDocumentInteractionController је доступан од iOS 2.0 и један је од најстаријих API-ја за рад са документима. Упркос старости, остаје релевантан за имплементацију функције Open In и уграђеног прегледа без коришћења спољних библиотека.
Preview — је уграђени прегледач докумената који обезбеђује UIDocumentInteractionController. Подржава PDF, слике, текстуалне датотеке и канцеларијске документе (укључујући .doc, .xls, .ppt). Preview се приказује са анимацијом прелаза сличном стандардном Quick Look-у.
За покретање Preview-а позовите методу presentPreview. Контролер захтева делегата са имплементацијом методе previewControllerForDocumentInteractionController, која враћа UIViewController за приказ документа. Обично се враћа self или навигациони контролер.
Уграђени Preview не захтева додатне фрејмворке или лиценце. Ради са било којом датотеком чији је URL прослеђен својству url. Корисник може да листа странице PDF-а, скалира слике и копира текст из докумената.
Open In — кључна функција UIDocumentInteractionController-а. Приказује листу апликација које могу да отворе овај тип датотеке. Корисник бира циљну апликацију, а iOS копира датотеку у њен пешчаник, покрећући апликацију за рад са документом.
Листа апликација се формира аутоматски на основу регистрованог Document Type у Info.plist других апликација. Ако је апликација регистровала подршку за PDF, појавиће се у менију Open In за PDF датотеке. Систем такође приказује стандардне радње: штампање, слање имејлом, чување у Датотеке.
Open In копира датотеку — циљна апликација добија сопствену копију, па се измене не чувају назад у оригиналној апликацији. Ако је потребно уређивање са чувањем, користите UIDocumentPickerViewController у режиму export са security-scoped URL-ом.
Од iOS 6 доступан је UIActivityViewController, који такође подржава слање датотека. За разлику од UIDocumentInteractionController-а, UIActivityViewController приказује системски лист радњи са подршком за AirDrop, пошту, поруке и прилагођене UIActivity. За једноставно слање датотека препоручује се UIActivityViewController као модернији API.
Имплементација Open In-а преко UIDocumentInteractionController-а захтева само неколико линија кода: креирање инстанце, подешавање URL-а и делегата, позивање presentOptionsMenu. Контролер аутоматски прикупља листу доступних апликација на основу типа датотеке.
class DocumentViewController: UIViewController {
lazy var interactionController = UIDocumentInteractionController()
func shareFile(url: URL) {
interactionController.url = url
interactionController.uti = url.utiType()
interactionController.delegate = self
interactionController.presentOptionsMenu(
from: self.view.bounds,
in: self.view,
animated: true
)
}
}
За приказ уграђеног прегледача уместо менија Open In, користите методу presentPreview. Контролер ће приказати документ на целом екрану са могућношћу листања. Делегат мора да имплементира методу previewControllerForDocumentInteractionController која враћа UIViewController за приказ.
UIDocumentInteractionControllerDelegate управља приказивањем и скривањем менија и Preview-а. Делегат имплементира опционе методе: documentInteractionControllerWillPresentOpenInMenu за анимацију појављивања, documentInteractionControllerDidDismissOpenInMenu за чишћење ресурса након затварања менија.
Важна метода за Preview — previewControllerForDocumentInteractionController, која мора да врати UIViewController за приказ документа. Ако метода није имплементирана или враћа nil, Preview неће бити покренут. Обично се враћа self или UINavigationController који садржи self.
Контролер такође подржава методу documentInteractionController:didEndSendingToApplication, која се позива након успешног преноса датотеке у другу апликацију. Ово омогућава чишћење привремене датотеке или ажурирање интерфејса након повратка у апликацију.
UIDocumentInteractionController и UIDocumentPickerViewController решавају различите задатке, иако оба раде са документима. Главна разлика: UIDocumentInteractionController преноси постојећу датотеку другој апликацији, а UIDocumentPickerViewController бира датотеку из спољног извора за тренутну апликацију.
| Параметар | UIDocumentInteractionController | UIDocumentPickerViewController |
|---|---|---|
| Намена | Послати датотеку у другу апликацију | Изабрати датотеку из другог извора |
| Извор | Сопствена датотека апликације | Било које складиште (iCloud, Датотеке, треће стране) |
| Режим | Копија датотеке примаоцу | Import или Export за тренутну апликацију |
| Интерфејс | Системски мени (Action Sheet) | Потпун прегледач датотека |
| Повратна вредност | Не враћа резултат | URL изабране датотеке преко делегата |
UIDocumentInteractionController не захтева делегата за основни рад — мени ће се приказати чак и без имплементације метода. UIDocumentPickerViewController без делегата је бескористан — резултат избора неће бити обрађен. Избор API-ја зависи од сценарија: слање датотеке → UIDocumentInteractionController, примање датотеке → UIDocumentPickerViewController.
Често постављана питања
UIDocumentInteractionController — је UIKit контролер за преглед докумената и пренос датотека између апликација путем функције Open In и уграђеног Preview-а.
Креирајте инстанцу, поставите својство url на циљну датотеку, наведите делегата и позовите presentOptionsMenu. Систем ће приказати листу апликација које подржавају овај тип датотеке.
UIDocumentInteractionController Preview — уграђени прегледач за један документ са основним могућностима. Quick Look (QLPreviewController) — посебан фрејмворк са подршком за групни преглед, проширења и додатне формате датотека.
Делегат је опционалан за основни рад — мени ће се приказати без њега. Делегат је обавезан само за Preview (метода previewControllerForDocumentInteractionController) и за праћење завршетка слања датотеке.
UIDocumentInteractionController шаље постојећу датотеку из апликације у другу. UIDocumentPickerViewController бира датотеку из спољног извора у тренутну апликацију. Први — за слање, други — за примање.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође