UIDocumentInteractionController ist ein iOS-Controller zur Vorschau von Dokumenten und zum Teilen von Dateien zwischen Apps. Er implementiert die Open In-Funktion, die es dem Benutzer ermöglicht, eine Datei in einer beliebigen kompatiblen App zu öffnen, per E-Mail zu senden oder in der Cloud zu speichern. Laut Apple Developer Documentation (2025) unterstützt der Controller auch die integrierte Vorschau zum Anzeigen von PDFs, Bildern und Office-Dokumenten.
Wichtige Punkte
UIDocumentInteractionController ist eine UIKit-Klasse, die eine Systemschnittstelle für die Arbeit mit Dokumenten bereitstellt. Im Gegensatz zu UIDocumentPickerViewController, der Dateien auswählt, arbeitet dieser Controller mit einer vorhandenen App-Datei und bietet dem Benutzer Aktionen: Vorschau, Öffnen in einer anderen App, Drucken oder Senden.
Der Controller ist kein ViewController — er wird nicht über present aufgerufen. Stattdessen zeigt er ein Systemaktionsmenü über die Methode presentOptionsMenu oder presentPreview an. Das Menü zeigt alle Apps an, die für die Verarbeitung des angegebenen Dateityps registriert sind.
UIDocumentInteractionController ist seit iOS 2.0 verfügbar und eine der ältesten APIs für die Arbeit mit Dokumenten. Trotz seines Alters ist er nach wie vor relevant für die Implementierung der Open In-Funktion und der integrierten Vorschau ohne Drittanbieter-Bibliotheken.
Preview ist ein integrierter Dokumenten-Viewer, der von UIDocumentInteractionController bereitgestellt wird. Er unterstützt PDFs, Bilder, Textdateien und Office-Dokumente (einschließlich .doc, .xls, .ppt). Die Vorschau wird mit einer Übergangsanimation ähnlich der standardmäßigen Quick Look angezeigt.
Um die Vorschau zu starten, rufen Sie die Methode presentPreview auf. Der Controller benötigt einen Delegaten, der die Methode previewControllerForDocumentInteractionController implementiert, die ein UIViewController zur Anzeige des Dokuments zurückgibt. Normalerweise wird self oder ein Navigationscontroller zurückgegeben.
Die integrierte Vorschau erfordert keine zusätzlichen Frameworks oder Lizenzen. Sie funktioniert mit jeder Datei, deren URL an die Eigenschaft url übergeben wird. Benutzer können durch PDF-Seiten blättern, Bilder zoomen und Text aus Dokumenten kopieren.
Open In ist die Kernfunktion von UIDocumentInteractionController. Sie zeigt eine Liste von Apps an, die den angegebenen Dateityp öffnen können. Der Benutzer wählt eine Ziel-App aus, und iOS kopiert die Datei in deren Sandbox und startet die App zur Bearbeitung des Dokuments.
Die App-Liste wird automatisch basierend auf den registrierten Document Type-Einträgen in den Info.plist-Dateien anderer Apps generiert. Wenn eine App PDF-Unterstützung registriert hat, wird sie im Open In-Menü für PDF-Dateien angezeigt. Das System zeigt auch Standardaktionen an: Drucken, per E-Mail senden, in Dateien speichern.
Open In kopiert die Datei — die Ziel-App erhält eine eigene Kopie, daher werden Änderungen nicht in der ursprünglichen App gespeichert. Wenn Sie eine Bearbeitung mit Speicherung benötigen, verwenden Sie UIDocumentPickerViewController im Exportmodus mit einer sicherheitsbezogenen URL.
Seit iOS 6 ist UIActivityViewController verfügbar, der ebenfalls Dateifreigabe unterstützt. Im Gegensatz zu UIDocumentInteractionController zeigt UIActivityViewController ein Systemaktivitätsblatt mit Unterstützung für AirDrop, E-Mail, Nachrichten und benutzerdefinierte UIActivity. Für einfache Dateifreigabe wird UIActivityViewController als modernere API empfohlen.
Die Implementierung von Open In über UIDocumentInteractionController erfordert nur wenige Codezeilen: Eine Instanz erstellen, URL und Delegaten festlegen, presentOptionsMenu aufrufen. Der Controller sammelt automatisch die Liste der verfügbaren Apps basierend auf dem Dateityp.
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
)
}
}
Um den integrierten Viewer anstelle des Open In-Menüs anzuzeigen, verwenden Sie die Methode presentPreview. Der Controller zeigt das Dokument im Vollbildmodus mit Scrollfunktion an. Der Delegat muss die Methode previewControllerForDocumentInteractionController implementieren, die ein UIViewController zur Anzeige zurückgibt.
UIDocumentInteractionControllerDelegate verwaltet die Anzeige und das Ausblenden des Menüs und der Vorschau. Der Delegat implementiert optionale Methoden: documentInteractionControllerWillPresentOpenInMenu für die Einblendungsanimation, documentInteractionControllerDidDismissOpenInMenu für die Ressourcenbereinigung nach dem Ausblenden des Menüs.
Eine wichtige Methode für die Vorschau ist previewControllerForDocumentInteractionController, die ein UIViewController zur Anzeige des Dokuments zurückgeben muss. Wenn die Methode nicht implementiert ist oder nil zurückgibt, wird die Vorschau nicht gestartet. Normalerweise wird self oder ein UINavigationController, der self enthält, zurückgegeben.
Der Controller unterstützt auch die Methode documentInteractionController:didEndSendingToApplication, die nach erfolgreichem Senden der Datei an eine andere App aufgerufen wird. Dies ermöglicht die Bereinigung temporärer Dateien oder die Aktualisierung der Oberfläche nach der Rückkehr zur App.
UIDocumentInteractionController und UIDocumentPickerViewController lösen unterschiedliche Aufgaben, obwohl beide mit Dokumenten arbeiten. Der Hauptunterschied: UIDocumentInteractionController überträgt eine vorhandene Datei an eine andere App, während UIDocumentPickerViewController eine Datei aus einer externen Quelle für die aktuelle App auswählt.
| Parameter | UIDocumentInteractionController | UIDocumentPickerViewController |
|---|---|---|
| Zweck | Datei an andere App senden | Datei aus anderer Quelle auswählen |
| Quelle | Eigene App-Datei | Beliebiger Speicher (iCloud, Dateien, Drittanbieter) |
| Modus | Kopie der Datei an Empfänger | Import oder Export für aktuelle App |
| Schnittstelle | Systemmenü (Action Sheet) | Vollständiger Datei-Browser |
| Rückgabe | Gibt kein Ergebnis zurück | URL der ausgewählten Datei über Delegaten |
UIDocumentInteractionController erfordert keinen Delegaten für den grundlegenden Betrieb — das Menü wird auch ohne Implementierung von Methoden angezeigt. UIDocumentPickerViewController ohne Delegaten ist nutzlos — das Auswahlergebnis wird nicht verarbeitet. Die API-Auswahl hängt vom Szenario ab: Datei senden → UIDocumentInteractionController, Datei empfangen → UIDocumentPickerViewController.
Häufig gestellte Fragen
UIDocumentInteractionController ist ein UIKit-Controller zur Vorschau von Dokumenten und zur Übertragung von Dateien zwischen Apps über die Open In-Funktion und die integrierte Vorschau.
Erstellen Sie eine Instanz, setzen Sie die Eigenschaft url auf die Zieldatei, geben Sie den Delegaten an und rufen Sie presentOptionsMenu auf. Das System zeigt eine Liste von Apps an, die den angegebenen Dateityp unterstützen.
UIDocumentInteractionController Preview ist ein integrierter Viewer für ein einzelnes Dokument mit grundlegenden Funktionen. Quick Look (QLPreviewController) ist ein separates Framework mit Unterstützung für Batch-Anzeige, Erweiterungen und zusätzliche Dateiformate.
Der Delegat ist für den grundlegenden Betrieb optional — das Menü wird auch ohne ihn angezeigt. Der Delegat ist nur für die Vorschau (Methode previewControllerForDocumentInteractionController) und zur Verfolgung des Dateisendeabschlusses erforderlich.
UIDocumentInteractionController sendet eine vorhandene Datei aus der App an eine andere App. UIDocumentPickerViewController wählt eine Datei aus einer externen Quelle für die aktuelle App aus. Ersteres ist zum Senden, Letzteres zum Empfangen.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch