UIDocumentInteractionController — vad är det, Open In och dokument

Författare: IT Sectr Publicerad: 2026-07-11 Lästid: 6 min

UIDocumentInteractionController — är en iOS-kontroll för förhandsgranskning av dokument och delning av filer mellan appar. Den implementerar funktionen Open In, vilket gör att användaren kan öppna en fil i valfri kompatibel app, skicka den via e-post eller spara den i molnlagring. Enligt Apple Developer Documentation (2025) stöder kontrollen också inbyggd Preview för visning av PDF, bilder och kontorsdokument.

Huvudpunkter

  • UIDocumentInteractionController — iOS-kontroll för att visa och skicka dokument till andra appar.
  • Preview — inbyggd visare för PDF, bilder och kontorsdokument utan att byta app.
  • Open In — funktion för att överföra en fil till en annan app för redigering eller visning.
  • UIDocumentInteractionControllerDelegate hanterar animationer, menyposition och slutförande av operationer.
  • Till skillnad från UIDocumentPickerViewController väljer detta API inte filer, utan överför befintliga.

Vad är UIDocumentInteractionController?

UIDocumentInteractionController — är en UIKit-klass som tillhandahåller ett systemgränssnitt för att arbeta med dokument. Till skillnad från UIDocumentPickerViewController som väljer filer, arbetar denna kontroll med en redan befintlig fil i appen och erbjuder användaren åtgärder: förhandsgranskning, öppna i en annan app, skriva ut eller skicka.

Kontrollen är inte en ViewController — den anropas inte via present. Istället visar den en systemåtgärdsmeny via metoden presentOptionsMenu eller presentPreview. Menyn visar alla appar som är registrerade för att behandla denna filtyp.

UIDocumentInteractionController är tillgänglig sedan iOS 2.0 och är ett av de äldsta API:erna för att arbeta med dokument. Trots sin ålder är den fortfarande relevant för att implementera Open In-funktionen och inbyggd förhandsgranskning utan tredjepartsbibliotek.

Preview-läge: inbyggd dokumentvisning

Preview — är en inbyggd dokumentvisare som tillhandahålls av UIDocumentInteractionController. Den stöder PDF, bilder, textfiler och kontorsdokument (inklusive .doc, .xls, .ppt). Preview visas med en övergångsanimation som liknar standard Quick Look.

För att starta Preview, anropa metoden presentPreview. Kontrollen kräver en delegat med implementering av metoden previewControllerForDocumentInteractionController, som returnerar en UIViewController för att visa dokumentet. Vanligtvis returneras self eller en navigationskontroll.

Inbyggd Preview kräver inte extra ramverk eller licenser. Den fungerar med alla filer vars URL har skickats till egenskapen url. Användaren kan bläddra igenom PDF-sidor, skala bilder och kopiera text från dokument.

Open In-läge: överföring av filer mellan appar

Open In — nyckelfunktionen i UIDocumentInteractionController. Den visar en lista över appar som kan öppna denna filtyp. Användaren väljer målappen och iOS kopierar filen till dess sandlåda och startar appen för att arbeta med dokumentet.

Listan över appar skapas automatiskt baserat på registrerade Document Type i Info.plist för andra appar. Om en app har registrerat stöd för PDF kommer den att visas i Open In-menyn för PDF-filer. Systemet visar också standardåtgärder: skriva ut, skicka via e-post, spara i Filer.

Open In kopierar filen — målappen får en egen kopia, så ändringar sparas inte tillbaka i den ursprungliga appen. Om redigering med sparande krävs, använd UIDocumentPickerViewController i exportläge med en security-scoped URL.

Konfigurera UIActivityViewController som alternativ

Sedan iOS 6 finns UIActivityViewController tillgängligt, som också stöder att skicka filer. Till skillnad från UIDocumentInteractionController visar UIActivityViewController ett systemåtgärdsblad med stöd för AirDrop, e-post, meddelanden och anpassad UIActivity. För enkel filskickning rekommenderas UIActivityViewController som ett modernare API.

Kodexempel: Open In i Swift

Implementering av Open In via UIDocumentInteractionController kräver bara några rader kod: skapa en instans, ställa in URL och delegat, anropa presentOptionsMenu. Kontrollen samlar automatiskt in listan över tillgängliga appar baserat på filtypen.

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

Starta Preview istället för menyn

För att visa den inbyggda visaren istället för Open In-menyn, använd metoden presentPreview. Kontrollen visar dokumentet i fullskärm med bläddringsmöjlighet. Delegaten måste implementera metoden previewControllerForDocumentInteractionController som returnerar en UIViewController för visning.

UIDocumentInteractionControllerDelegate och livscykel

UIDocumentInteractionControllerDelegate hanterar visning och döljning av menyn och Preview. Delegaten implementerar valfria metoder: documentInteractionControllerWillPresentOpenInMenu för visningsanimering, documentInteractionControllerDidDismissOpenInMenu för rensning av resurser efter att menyn stängts.

Viktig metod för Preview — previewControllerForDocumentInteractionController, som måste returnera en UIViewController för att visa dokumentet. Om metoden inte är implementerad eller returnerar nil kommer Preview inte att startas. Vanligtvis returneras self eller en UINavigationController som innehåller self.

Kontrollen stöder också metoden documentInteractionController:didEndSendingToApplication, som anropas efter framgångsrik överföring av filen till en annan app. Detta möjliggör rensning av den temporära filen eller uppdatering av gränssnittet efter återgång till appen.

Skillnader från UIDocumentPickerViewController

UIDocumentInteractionController och UIDocumentPickerViewController löser olika uppgifter, även om båda arbetar med dokument. Huvudskillnaden: UIDocumentInteractionController överför en befintlig fil till en annan app, medan UIDocumentPickerViewController väljer en fil från en extern källa för den aktuella appen.

ParameterUIDocumentInteractionControllerUIDocumentPickerViewController
SyfteSkicka fil till en annan appVälja fil från en annan källa
KällaAppens egen filValfri lagring (iCloud, Filer, tredje part)
LägeKopia av filen till mottagarenImport eller Export för den aktuella appen
GränssnittSystemmeny (Action Sheet)Fullständig filbläddrare
ReturReturnerar inget resultatURL för vald fil via delegaten

UIDocumentInteractionController kräver inte delegat för grundläggande funktion — menyn visas även utan implementering av metoder. UIDocumentPickerViewController utan delegat är värdelös — valresultatet kommer inte att bearbetas. Valet av API beror på scenariot: skicka fil → UIDocumentInteractionController, ta emot fil → UIDocumentPickerViewController.

Vanliga frågor

Vad är UIDocumentInteractionController i iOS?

UIDocumentInteractionController — är en UIKit-kontroll för förhandsgranskning av dokument och överföring av filer mellan appar via Open In-funktionen och inbyggd Preview.

Hur öppnar man en fil i en annan app via UIDocumentInteractionController?

Skapa en instans, ställ in egenskapen url på målfilen, ange delegaten och anropa presentOptionsMenu. Systemet visar en lista över appar som stöder denna filtyp.

Vad är skillnaden mellan Preview och Quick Look?

UIDocumentInteractionController Preview — inbyggd visare för ett enda dokument med grundläggande funktioner. Quick Look (QLPreviewController) — ett separat ramverk med stöd för batchvisning, tillägg och ytterligare filformat.

Behöver jag implementera en delegat för UIDocumentInteractionController?

Delegaten är valfri för grundläggande funktion — menyn visas utan den. Delegat krävs endast för Preview (metoden previewControllerForDocumentInteractionController) och för att spåra slutförande av filskickning.

Vad är skillnaden mellan UIDocumentInteractionController och UIDocumentPickerViewController?

UIDocumentInteractionController skickar en befintlig fil från appen till en annan. UIDocumentPickerViewController väljer en fil från en extern källa till den aktuella appen. Den första är för att skicka, den andra för att ta emot.

Sammanfattning

  • UIDocumentInteractionController — iOS-kontroll för att visa och skicka filer mellan appar, tillgänglig sedan iOS 2.0.
  • Preview ger inbyggd visning av PDF, bilder och kontorsdokument utan tredjepartsbibliotek.
  • Open In kopierar filen till den valda appens sandlåda — ändringar återförs inte till den ursprungliga appen.
  • UIDocumentInteractionControllerDelegate hanterar animationer, menyposition och slutförande av skickning via delegatmetoder.
  • presentOptionsMenu visar systemmenyn med tillgängliga appar för denna filtyp.
  • UIActivityViewController är ett modernare alternativ för att skicka filer sedan iOS 6.
  • Huvudskillnad från UIDocumentPickerViewController: den första skickar en fil från appen, den andra väljer en fil till appen.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också