UIDocumentInteractionController — je iOS kontrolér pro náhled dokumentů a sdílení souborů mezi aplikacemi. Implementuje funkci Open In, která uživateli umožňuje otevřít soubor v jakékoli kompatibilní aplikaci, odeslat jej e-mailem nebo uložit do cloudového úložiště. Podle Apple Developer Documentation (2025) kontrolér také podporuje vestavěný Preview pro prohlížení PDF, obrázků a kancelářských dokumentů.
Hlavní body
UIDocumentInteractionController — je třída UIKit poskytující systémové rozhraní pro práci s dokumenty. Na rozdíl od UIDocumentPickerViewController, který vybírá soubory, tento kontrolér pracuje s již existujícím souborem aplikace a nabízí uživateli akce: náhled, otevření v jiné aplikaci, tisk nebo odeslání.
Kontrolér není ViewController — nevolá se přes present. Místo toho zobrazuje systémovou nabídku akcí prostřednictvím metody presentOptionsMenu nebo presentPreview. Nabídka zobrazuje všechny aplikace registrované pro zpracování tohoto typu souboru.
UIDocumentInteractionController je dostupný od iOS 2.0 a je jedním z nejstarších API pro práci s dokumenty. Navzdory svému stáří zůstává relevantní pro implementaci funkce Open In a vestavěného náhledu bez použití externích knihoven.
Preview — je vestavěný prohlížeč dokumentů poskytovaný UIDocumentInteractionController. Podporuje PDF, obrázky, textové soubory a kancelářské dokumenty (včetně .doc, .xls, .ppt). Preview se zobrazuje s přechodovou animací podobnou standardnímu Quick Look.
Pro spuštění Preview zavolejte metodu presentPreview. Kontrolér vyžaduje delegáta s implementací metody previewControllerForDocumentInteractionController, která vrací UIViewController pro zobrazení dokumentu. Obvykle se vrací self nebo navigační kontrolér.
Vestavěný Preview nevyžaduje další frameworky nebo licence. Funguje s jakýmkoli souborem, jehož URL bylo předáno vlastnosti url. Uživatel může listovat stránkami PDF, škálovat obrázky a kopírovat text z dokumentů.
Open In — klíčová funkce UIDocumentInteractionController. Zobrazuje seznam aplikací, které mohou otevřít tento typ souboru. Uživatel vybere cílovou aplikaci a iOS zkopíruje soubor do jejího sandboxu a spustí aplikaci pro práci s dokumentem.
Seznam aplikací se vytváří automaticky na základě registrovaných Document Type v Info.plist jiných aplikací. Pokud aplikace zaregistrovala podporu pro PDF, objeví se v nabídce Open In pro PDF soubory. Systém také zobrazuje standardní akce: tisk, odeslání e-mailem, uložení do Souborů.
Open In kopíruje soubor — cílová aplikace obdrží vlastní kopii, takže změny nejsou ukládány zpět do původní aplikace. Pokud je vyžadována úprava s uložením, použijte UIDocumentPickerViewController v režimu export s security-scoped URL.
Od iOS 6 je k dispozici UIActivityViewController, který také podporuje odesílání souborů. Na rozdíl od UIDocumentInteractionController zobrazuje UIActivityViewController systémový list akcí s podporou AirDrop, pošty, zpráv a vlastních UIActivity. Pro jednoduché odesílání souborů se doporučuje UIActivityViewController jako modernější API.
Implementace Open In přes UIDocumentInteractionController vyžaduje jen několik řádků kódu: vytvoření instance, nastavení URL a delegáta, zavolání presentOptionsMenu. Kontrolér automaticky shromažďuje seznam dostupných aplikací na základě typu souboru.
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
)
}
}
Pro zobrazení vestavěného prohlížeče místo nabídky Open In použijte metodu presentPreview. Kontrolér zobrazí dokument na celou obrazovku s možností listování. Delegát musí implementovat metodu previewControllerForDocumentInteractionController, která vrací UIViewController pro zobrazení.
UIDocumentInteractionControllerDelegate spravuje zobrazování a skrývání nabídky a Preview. Delegát implementuje volitelné metody: documentInteractionControllerWillPresentOpenInMenu pro animaci zobrazení, documentInteractionControllerDidDismissOpenInMenu pro vyčištění prostředků po zavření nabídky.
Důležitá metoda pro Preview — previewControllerForDocumentInteractionController, která musí vrátit UIViewController pro zobrazení dokumentu. Pokud metoda není implementována nebo vrací nil, Preview se nespustí. Obvykle se vrací self nebo UINavigationController obsahující self.
Kontrolér také podporuje metodu documentInteractionController:didEndSendingToApplication, která je volána po úspěšném přenosu souboru do jiné aplikace. To umožňuje vyčištění dočasného souboru nebo aktualizaci rozhraní po návratu do aplikace.
UIDocumentInteractionController a UIDocumentPickerViewController řeší různé úkoly, ačkoli oba pracují s dokumenty. Hlavní rozdíl: UIDocumentInteractionController přenáší existující soubor do jiné aplikace, zatímco UIDocumentPickerViewController vybírá soubor z externího zdroje pro aktuální aplikaci.
| Parametr | UIDocumentInteractionController | UIDocumentPickerViewController |
|---|---|---|
| Účel | Odeslat soubor do jiné aplikace | Vybrat soubor z jiného zdroje |
| Zdroj | Vlastní soubor aplikace | Jakékoli úložiště (iCloud, Soubory, třetí strany) |
| Režim | Kopie souboru příjemci | Import nebo Export pro aktuální aplikaci |
| Rozhraní | Systémová nabídka (Action Sheet) | Plnohodnotný prohlížeč souborů |
| Návrat | Nevrací výsledek | URL vybraného souboru přes delegáta |
UIDocumentInteractionController nevyžaduje delegáta pro základní práci — nabídka se zobrazí i bez implementace metod. UIDocumentPickerViewController bez delegáta je k ničemu — výsledek výběru nebude zpracován. Volba API závisí na scénáři: odeslání souboru → UIDocumentInteractionController, přijetí souboru → UIDocumentPickerViewController.
Často kladené otázky
UIDocumentInteractionController — je UIKit kontrolér pro náhled dokumentů a přenos souborů mezi aplikacemi prostřednictvím funkce Open In a vestavěného Preview.
Vytvořte instanci, nastavte vlastnost url na cílový soubor, uveďte delegáta a zavolejte presentOptionsMenu. Systém zobrazí seznam aplikací podporujících tento typ souboru.
UIDocumentInteractionController Preview — vestavěný prohlížeč pro jeden dokument se základními možnostmi. Quick Look (QLPreviewController) — samostatný framework s podporou dávkového prohlížení, rozšíření a dalších formátů souborů.
Delegát je volitelný pro základní práci — nabídka se zobrazí i bez něj. Delegát je povinný pouze pro Preview (metoda previewControllerForDocumentInteractionController) a pro sledování dokončení odeslání souboru.
UIDocumentInteractionController odesílá existující soubor z aplikace do jiné. UIDocumentPickerViewController vybírá soubor z externího zdroje do aktuální aplikace. První — pro odesílání, druhý — pro přijímání.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také