UIDocumentInteractionController — шта је то, Open In и документи

Аутор: IT Sectr Објављено: 2026-07-11 Време читања: 6 мин

UIDocumentInteractionController — је iOS контролер за преглед докумената и дељење датотека између апликација. Он имплементира функцију Open In, омогућавајући кориснику да отвори датотеку у било којој компатибилној апликацији, пошаље је имејлом или сачува у облаку. Према Apple Developer Documentation (2025), контролер такође подржава уграђени Preview за преглед PDF-а, слика и канцеларијских докумената.

Главне тачке

  • UIDocumentInteractionController — iOS контролер за преглед и слање докумената у друге апликације.
  • Preview — уграђени прегледач PDF-а, слика и канцеларијских докумената без пребацивања апликације.
  • Open In — функција преноса датотеке у другу апликацију за уређивање или преглед.
  • UIDocumentInteractionControllerDelegate управља анимацијама, позицијом менија и завршетком операција.
  • За разлику од UIDocumentPickerViewController-а, овај API не бира датотеке, већ преноси постојеће.

Шта је UIDocumentInteractionController?

UIDocumentInteractionController — је UIKit класа која пружа системски интерфејс за рад са документима. За разлику од UIDocumentPickerViewController-а који бира датотеке, овај контролер ради са већ постојећом датотеком апликације и нуди кориснику радње: преглед, отварање у другој апликацији, штампање или слање.

Контролер није ViewController — не позива се преко present. Уместо тога, приказује системски мени радњи путем методе presentOptionsMenu или presentPreview. Мени приказује све апликације регистроване за обраду овог типа датотеке.

UIDocumentInteractionController је доступан од iOS 2.0 и један је од најстаријих API-ја за рад са документима. Упркос старости, остаје релевантан за имплементацију функције Open In и уграђеног прегледа без коришћења спољних библиотека.

Preview режим: уграђени преглед докумената

Preview — је уграђени прегледач докумената који обезбеђује UIDocumentInteractionController. Подржава PDF, слике, текстуалне датотеке и канцеларијске документе (укључујући .doc, .xls, .ppt). Preview се приказује са анимацијом прелаза сличном стандардном Quick Look-у.

За покретање Preview-а позовите методу presentPreview. Контролер захтева делегата са имплементацијом методе previewControllerForDocumentInteractionController, која враћа UIViewController за приказ документа. Обично се враћа self или навигациони контролер.

Уграђени Preview не захтева додатне фрејмворке или лиценце. Ради са било којом датотеком чији је URL прослеђен својству url. Корисник може да листа странице PDF-а, скалира слике и копира текст из докумената.

Open In режим: пренос датотека између апликација

Open In — кључна функција UIDocumentInteractionController-а. Приказује листу апликација које могу да отворе овај тип датотеке. Корисник бира циљну апликацију, а iOS копира датотеку у њен пешчаник, покрећући апликацију за рад са документом.

Листа апликација се формира аутоматски на основу регистрованог Document Type у Info.plist других апликација. Ако је апликација регистровала подршку за PDF, појавиће се у менију Open In за PDF датотеке. Систем такође приказује стандардне радње: штампање, слање имејлом, чување у Датотеке.

Open In копира датотеку — циљна апликација добија сопствену копију, па се измене не чувају назад у оригиналној апликацији. Ако је потребно уређивање са чувањем, користите UIDocumentPickerViewController у режиму export са security-scoped URL-ом.

Подешавање UIActivityViewController-а као алтернатива

Од iOS 6 доступан је UIActivityViewController, који такође подржава слање датотека. За разлику од UIDocumentInteractionController-а, UIActivityViewController приказује системски лист радњи са подршком за AirDrop, пошту, поруке и прилагођене UIActivity. За једноставно слање датотека препоручује се UIActivityViewController као модернији API.

Пример кода: Open In у Swift-у

Имплементација Open In-а преко UIDocumentInteractionController-а захтева само неколико линија кода: креирање инстанце, подешавање URL-а и делегата, позивање presentOptionsMenu. Контролер аутоматски прикупља листу доступних апликација на основу типа датотеке.

swift
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
        )
    }
}

Покретање Preview-а уместо менија

За приказ уграђеног прегледача уместо менија Open In, користите методу presentPreview. Контролер ће приказати документ на целом екрану са могућношћу листања. Делегат мора да имплементира методу previewControllerForDocumentInteractionController која враћа UIViewController за приказ.

UIDocumentInteractionControllerDelegate и животни циклус

UIDocumentInteractionControllerDelegate управља приказивањем и скривањем менија и Preview-а. Делегат имплементира опционе методе: documentInteractionControllerWillPresentOpenInMenu за анимацију појављивања, documentInteractionControllerDidDismissOpenInMenu за чишћење ресурса након затварања менија.

Важна метода за Preview — previewControllerForDocumentInteractionController, која мора да врати UIViewController за приказ документа. Ако метода није имплементирана или враћа nil, Preview неће бити покренут. Обично се враћа self или UINavigationController који садржи self.

Контролер такође подржава методу documentInteractionController:didEndSendingToApplication, која се позива након успешног преноса датотеке у другу апликацију. Ово омогућава чишћење привремене датотеке или ажурирање интерфејса након повратка у апликацију.

Разлике у односу на UIDocumentPickerViewController

UIDocumentInteractionController и UIDocumentPickerViewController решавају различите задатке, иако оба раде са документима. Главна разлика: UIDocumentInteractionController преноси постојећу датотеку другој апликацији, а UIDocumentPickerViewController бира датотеку из спољног извора за тренутну апликацију.

ПараметарUIDocumentInteractionControllerUIDocumentPickerViewController
НаменаПослати датотеку у другу апликацијуИзабрати датотеку из другог извора
ИзворСопствена датотека апликацијеБило које складиште (iCloud, Датотеке, треће стране)
РежимКопија датотеке примаоцуImport или Export за тренутну апликацију
ИнтерфејсСистемски мени (Action Sheet)Потпун прегледач датотека
Повратна вредностНе враћа резултатURL изабране датотеке преко делегата

UIDocumentInteractionController не захтева делегата за основни рад — мени ће се приказати чак и без имплементације метода. UIDocumentPickerViewController без делегата је бескористан — резултат избора неће бити обрађен. Избор API-ја зависи од сценарија: слање датотеке → UIDocumentInteractionController, примање датотеке → UIDocumentPickerViewController.

Често постављана питања

Шта је UIDocumentInteractionController у iOS-у?

UIDocumentInteractionController — је UIKit контролер за преглед докумената и пренос датотека између апликација путем функције Open In и уграђеног Preview-а.

Како отворити датотеку у другој апликацији преко UIDocumentInteractionController-а?

Креирајте инстанцу, поставите својство url на циљну датотеку, наведите делегата и позовите presentOptionsMenu. Систем ће приказати листу апликација које подржавају овај тип датотеке.

По чему се Preview разликује од Quick Look-а?

UIDocumentInteractionController Preview — уграђени прегледач за један документ са основним могућностима. Quick Look (QLPreviewController) — посебан фрејмворк са подршком за групни преглед, проширења и додатне формате датотека.

Да ли је потребно имплементирати делегата за UIDocumentInteractionController?

Делегат је опционалан за основни рад — мени ће се приказати без њега. Делегат је обавезан само за Preview (метода previewControllerForDocumentInteractionController) и за праћење завршетка слања датотеке.

По чему се UIDocumentInteractionController разликује од UIDocumentPickerViewController-а?

UIDocumentInteractionController шаље постојећу датотеку из апликације у другу. UIDocumentPickerViewController бира датотеку из спољног извора у тренутну апликацију. Први — за слање, други — за примање.

Резиме

  • UIDocumentInteractionController — iOS контролер за преглед и слање датотека између апликација, доступан од iOS 2.0.
  • Preview пружа уграђени прегледач PDF-а, слика и канцеларијских докумената без спољних библиотека.
  • Open In копира датотеку у пешчаник изабране апликације — измене се не враћају у оригиналну апликацију.
  • UIDocumentInteractionControllerDelegate управља анимацијама, позицијом менија и завршетком слања преко делегат метода.
  • presentOptionsMenu приказује системски мени са доступним апликацијама за овај тип датотеке.
  • UIActivityViewController је модернија алтернатива за слање датотека од iOS 6.
  • Главна разлика у односу на UIDocumentPickerViewController: први шаље датотеку из апликације, други бира датотеку у апликацију.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође