UIDocumentInteractionController — co to je, Open In a dokumenty

Autor: IT Sectr Publikováno: 2026-07-11 Doba čtení: 6 min

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 — iOS kontrolér pro prohlížení a odesílání dokumentů do jiných aplikací.
  • Preview — vestavěný prohlížeč PDF, obrázků a kancelářských dokumentů bez přepínání aplikace.
  • Open In — funkce přenosu souboru do jiné aplikace pro úpravu nebo prohlížení.
  • UIDocumentInteractionControllerDelegate spravuje animace, pozici nabídky a dokončení operací.
  • Na rozdíl od UIDocumentPickerViewController toto API nevybírá soubory, ale přenáší existující.

Co je UIDocumentInteractionController?

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.

Režim Preview: vestavěný prohlížeč dokumentů

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ů.

Režim Open In: přenos souborů mezi aplikacemi

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.

Nastavení UIActivityViewController jako alternativa

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.

Příklad kódu: Open In ve Swiftu

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.

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

Spuštění Preview místo nabídky

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 a životní cyklus

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.

Rozdíly oproti UIDocumentPickerViewController

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.

ParametrUIDocumentInteractionControllerUIDocumentPickerViewController
ÚčelOdeslat soubor do jiné aplikaceVybrat soubor z jiného zdroje
ZdrojVlastní soubor aplikaceJakékoli úložiště (iCloud, Soubory, třetí strany)
RežimKopie souboru příjemciImport nebo Export pro aktuální aplikaci
RozhraníSystémová nabídka (Action Sheet)Plnohodnotný prohlížeč souborů
NávratNevrací výsledekURL 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

Co je UIDocumentInteractionController v iOS?

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.

Jak otevřít soubor v jiné aplikaci přes UIDocumentInteractionController?

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.

Čím se Preview liší od Quick Look?

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ů.

Je nutné implementovat delegáta pro UIDocumentInteractionController?

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.

Čím se UIDocumentInteractionController liší od UIDocumentPickerViewController?

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í

  • UIDocumentInteractionController — iOS kontrolér pro prohlížení a odesílání souborů mezi aplikacemi, dostupný od iOS 2.0.
  • Preview poskytuje vestavěný prohlížeč PDF, obrázků a kancelářských dokumentů bez externích knihoven.
  • Open In kopíruje soubor do sandboxu vybrané aplikace — změny se nevrací do původní aplikace.
  • UIDocumentInteractionControllerDelegate spravuje animace, pozici nabídky a dokončení odeslání prostřednictvím delegátských metod.
  • presentOptionsMenu zobrazuje systémovou nabídku s dostupnými aplikacemi pro tento typ souboru.
  • UIActivityViewController je modernější alternativa pro odesílání souborů od iOS 6.
  • Hlavní rozdíl oproti UIDocumentPickerViewController: první odesílá soubor z aplikace, druhý vybírá soubor do aplikace.

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í.

Prodiskutovat projekt

Přečtěte si také