UIDocumentInteractionController — ce este, Open In și documente

Autor: IT Sectr Publicat: 2026-07-11 Timp de citire: 6 min

UIDocumentInteractionController — este un controler iOS pentru previzualizarea documentelor și partajarea fișierelor între aplicații. Acesta implementează funcția Open In, permițând utilizatorului să deschidă un fișier în orice aplicație compatibilă, să îl trimită prin e-mail sau să îl salveze în stocare în cloud. Conform Apple Developer Documentation (2025), controlerul suportă și Preview încorporat pentru vizualizarea PDF-urilor, imaginilor și documentelor de birou.

Principalele puncte

  • UIDocumentInteractionController — controler iOS pentru vizualizarea și trimiterea documentelor către alte aplicații.
  • Preview — vizualizator încorporat pentru PDF, imagini și documente de birou fără a schimba aplicația.
  • Open In — funcția de transmitere a fișierului către altă aplicație pentru editare sau vizualizare.
  • UIDocumentInteractionControllerDelegate gestionează animațiile, poziția meniului și finalizarea operațiilor.
  • Spre deosebire de UIDocumentPickerViewController, acest API nu selectează fișiere, ci transmite fișiere existente.

Ce este UIDocumentInteractionController?

UIDocumentInteractionController — este o clasă UIKit care oferă o interfață de sistem pentru lucrul cu documentele. Spre deosebire de UIDocumentPickerViewController, care selectează fișiere, acest controler lucrează cu un fișier deja existent al aplicației și oferă utilizatorului acțiuni: previzualizare, deschidere în altă aplicație, imprimare sau trimitere.

Controlerul nu este un ViewController — nu se apelează prin present. În schimb, afișează meniul de sistem al acțiunilor prin metoda presentOptionsMenu sau presentPreview. Meniul arată toate aplicațiile înregistrate pentru procesarea acestui tip de fișier.

UIDocumentInteractionController este disponibil începând cu iOS 2.0 și este unul dintre cele mai vechi API-uri pentru lucrul cu documentele. În ciuda vechimii, rămâne relevant pentru implementarea funcției Open In și a previzualizării încorporate fără a utiliza biblioteci terțe.

Modul Preview: vizualizarea încorporată a documentelor

Preview — este un vizualizator încorporat de documente oferit de UIDocumentInteractionController. Suportă PDF, imagini, fișiere text și documente de birou (inclusiv .doc, .xls, .ppt). Preview se afișează cu o animație de tranziție similară cu Quick Look standard.

Pentru a porni Preview, apelați metoda presentPreview. Controlerul necesită un delegat cu implementarea metodei previewControllerForDocumentInteractionController, care returnează un UIViewController pentru afișarea documentului. De obicei, se returnează self sau un controler de navigare.

Preview încorporat nu necesită framework-uri sau licențe suplimentare. Funcționează cu orice fișier al cărui URL a fost transmis proprietății url. Utilizatorul poate derula paginile PDF, poate scala imaginile și poate copia text din documente.

Modul Open In: transmiterea fișierelor între aplicații

Open In — funcția cheie a UIDocumentInteractionController. Afișează lista aplicațiilor care pot deschide acest tip de fișier. Utilizatorul selectează aplicația țintă, iar iOS copiază fișierul în sandbox-ul acesteia, lansând aplicația pentru lucrul cu documentul.

Lista aplicațiilor se formează automat pe baza Document Type înregistrat în Info.plist al altor aplicații. Dacă o aplicație a înregistrat suport pentru PDF, va apărea în meniul Open In pentru fișiere PDF. Sistemul afișează și acțiuni standard: imprimare, trimitere prin e-mail, salvare în Fișiere.

Open In copiază fișierul — aplicația țintă primește propria copie, deci modificările nu se salvează înapoi în aplicația originală. Dacă este necesară editarea cu salvare, utilizați UIDocumentPickerViewController în modul export cu URL securizat.

Configurarea UIActivityViewController ca alternativă

Din iOS 6 este disponibil UIActivityViewController, care suportă și trimiterea de fișiere. Spre deosebire de UIDocumentInteractionController, UIActivityViewController afișează o foaie de acțiuni de sistem cu suport pentru AirDrop, e-mail, mesaje și UIActivity personalizate. Pentru trimiterea simplă de fișiere, se recomandă UIActivityViewController ca API mai modern.

Exemplu de cod: Open In în Swift

Implementarea Open In prin UIDocumentInteractionController necesită doar câteva linii de cod: crearea unei instanțe, setarea URL-ului și a delegatului, apelarea presentOptionsMenu. Controlerul colectează automat lista aplicațiilor disponibile pe baza tipului de fișier.

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

Pornirea Preview în locul meniului

Pentru a afișa vizualizatorul încorporat în locul meniului Open In, utilizați metoda presentPreview. Controlerul va afișa documentul pe ecran complet cu posibilitatea de derulare. Delegatul trebuie să implementeze metoda previewControllerForDocumentInteractionController, care returnează un UIViewController pentru afișare.

UIDocumentInteractionControllerDelegate și ciclul de viață

UIDocumentInteractionControllerDelegate gestionează afișarea și ascunderea meniului și Preview-ului. Delegatul implementează metode opționale: documentInteractionControllerWillPresentOpenInMenu pentru animația de apariție, documentInteractionControllerDidDismissOpenInMenu pentru curățarea resurselor după închiderea meniului.

Metoda importantă pentru Preview — previewControllerForDocumentInteractionController, care trebuie să returneze un UIViewController pentru afișarea documentului. Dacă metoda nu este implementată sau returnează nil, Preview nu va porni. De obicei, se returnează self sau un UINavigationController care conține self.

Controlerul suportă și metoda documentInteractionController:didEndSendingToApplication, care este apelată după transmiterea cu succes a fișierului către o altă aplicație. Aceasta permite curățarea fișierului temporar sau actualizarea interfeței după revenirea în aplicație.

Diferențe față de UIDocumentPickerViewController

UIDocumentInteractionController și UIDocumentPickerViewController rezolvă sarcini diferite, deși ambele lucrează cu documente. Diferența principală: UIDocumentInteractionController transmite un fișier existent către o altă aplicație, iar UIDocumentPickerViewController selectează un fișier dintr-o sursă externă pentru aplicația curentă.

ParametruUIDocumentInteractionControllerUIDocumentPickerViewController
ScopTrimite fișierul către altă aplicațieSelectează fișierul dintr-o altă sursă
SursăFișierul propriu al aplicațieiOrice stocare (iCloud, Fișiere, terță parte)
ModCopie a fișierului pentru destinatarImport sau Export pentru aplicația curentă
InterfațăMeniul de sistem (Action Sheet)Navigator de fișiere complet
ReturnareNu returnează rezultatURL-ul fișierului selectat prin delegat

UIDocumentInteractionController nu necesită delegat pentru funcționarea de bază — meniul se va afișa chiar și fără implementarea metodelor. UIDocumentPickerViewController fără delegat este inutil — rezultatul selecției nu va fi procesat. Alegerea API-ului depinde de scenariu: trimitere fișier → UIDocumentInteractionController, primire fișier → UIDocumentPickerViewController.

Întrebări frecvente

Ce este UIDocumentInteractionController în iOS?

UIDocumentInteractionController — este un controler UIKit pentru previzualizarea documentelor și transmiterea fișierelor între aplicații prin funcția Open In și Preview încorporat.

Cum se deschide un fișier în altă aplicație prin UIDocumentInteractionController?

Creați o instanță, setați proprietatea url pe fișierul țintă, indicați delegatul și apelați presentOptionsMenu. Sistemul va afișa lista aplicațiilor care suportă acest tip de fișier.

Cu ce se deosebește Preview de Quick Look?

UIDocumentInteractionController Preview — un vizualizator încorporat pentru un singur document cu capabilități de bază. Quick Look (QLPreviewController) — un framework separat cu suport pentru vizualizare în lot, extensii și formate de fișier suplimentare.

Este necesar să implementez delegatul pentru UIDocumentInteractionController?

Delegatul este opțional pentru funcționarea de bază — meniul se va afișa fără el. Delegatul este obligatoriu doar pentru Preview (metoda previewControllerForDocumentInteractionController) și pentru urmărirea finalizării trimiterii fișierului.

Cu ce se deosebește UIDocumentInteractionController de UIDocumentPickerViewController?

UIDocumentInteractionController trimite un fișier existent din aplicație în alta. UIDocumentPickerViewController selectează un fișier dintr-o sursă externă în aplicația curentă. Primul — pentru trimitere, al doilea — pentru primire.

Rezumat

  • UIDocumentInteractionController — controler iOS pentru vizualizarea și trimiterea fișierelor între aplicații, disponibil din iOS 2.0.
  • Preview oferă vizualizare încorporată pentru PDF, imagini și documente de birou fără biblioteci terțe.
  • Open In copiază fișierul în sandbox-ul aplicației selectate — modificările nu revin în aplicația originală.
  • UIDocumentInteractionControllerDelegate gestionează animațiile, poziția meniului și finalizarea trimiterii prin metodele delegatului.
  • presentOptionsMenu afișează meniul de sistem cu aplicațiile disponibile pentru acest tip de fișier.
  • UIActivityViewController este o alternativă mai modernă pentru trimiterea fișierelor din iOS 6.
  • Diferența principală față de UIDocumentPickerViewController: primul trimite fișierul din aplicație, al doilea selectează fișierul în aplicație.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și