UIDocumentInteractionController — is een iOS-controller voor het voorbeeldweergave van documenten en het delen van bestanden tussen apps. Het implementeert de functie Open In, waarmee de gebruiker een bestand kan openen in elke compatibele app, per e-mail kan verzenden of in de cloud kan opslaan. Volgens Apple Developer Documentation (2025) ondersteunt de controller ook ingebouwde Preview voor het bekijken van PDF's, afbeeldingen en kantoordocumenten.
Belangrijkste punten
UIDocumentInteractionController — is een UIKit-klasse die een systeeminterface biedt voor het werken met documenten. In tegenstelling tot UIDocumentPickerViewController, dat bestanden selecteert, werkt deze controller met een reeds bestaand bestand van de app en biedt de gebruiker acties: voorbeeldweergave, openen in een andere app, afdrukken of verzenden.
De controller is geen ViewController — deze wordt niet aangeroepen via present. In plaats daarvan toont het een systeemactiemenu via de methode presentOptionsMenu of presentPreview. Het menu toont alle apps die zijn geregistreerd voor de verwerking van dit bestandstype.
UIDocumentInteractionController is beschikbaar sinds iOS 2.0 en is een van de oudste API's voor het werken met documenten. Ondanks zijn leeftijd blijft het relevant voor het implementeren van de Open In-functie en ingebouwde voorbeeldweergave zonder externe bibliotheken.
Preview — is een ingebouwde documentviewer die wordt geleverd door UIDocumentInteractionController. Het ondersteunt PDF, afbeeldingen, tekstbestanden en kantoordocumenten (inclusief .doc, .xls, .ppt). Preview wordt weergegeven met een overgangsanimatie vergelijkbaar met standaard Quick Look.
Om Preview te starten, roept u de methode presentPreview aan. De controller vereist een gedelegeerde met implementatie van de methode previewControllerForDocumentInteractionController, die een UIViewController retourneert voor het weergeven van het document. Meestal wordt self of een navigatiecontroller geretourneerd.
Ingebouwde Preview vereist geen extra frameworks of licenties. Het werkt met elk bestand waarvan de URL is doorgegeven aan de eigenschap url. De gebruiker kan PDF-pagina's doorbladeren, afbeeldingen schalen en tekst uit documenten kopiëren.
Open In — de belangrijkste functie van UIDocumentInteractionController. Het toont een lijst van apps die dit bestandstype kunnen openen. De gebruiker selecteert de doelapp en iOS kopieert het bestand naar de sandbox ervan, waarbij de app wordt gestart om met het document te werken.
De lijst met apps wordt automatisch gevormd op basis van geregistreerde Document Type in Info.plist van andere apps. Als een app ondersteuning voor PDF heeft geregistreerd, verschijnt deze in het Open In-menu voor PDF-bestanden. Het systeem toont ook standaardacties: afdrukken, e-mailen, opslaan in Bestanden.
Open In kopieert het bestand — de doelapp ontvangt een eigen kopie, dus wijzigingen worden niet terug opgeslagen in de oorspronkelijke app. Als bewerking met opslag vereist is, gebruik dan UIDocumentPickerViewController in de exportmodus met een security-scoped URL.
Sinds iOS 6 is UIActivityViewController beschikbaar, dat ook het verzenden van bestanden ondersteunt. In tegenstelling tot UIDocumentInteractionController toont UIActivityViewController een systeemactievel met ondersteuning voor AirDrop, e-mail, berichten en aangepaste UIActivity. Voor eenvoudig bestandsverzenden wordt UIActivityViewController aanbevolen als modernere API.
Implementatie van Open In via UIDocumentInteractionController vereist slechts een paar regels code: een instantie maken, de URL en gedelegeerde instellen, presentOptionsMenu aanroepen. De controller verzamelt automatisch de lijst met beschikbare apps op basis van het bestandstype.
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
)
}
}
Om de ingebouwde viewer weer te geven in plaats van het Open In-menu, gebruikt u de methode presentPreview. De controller toont het document op volledig scherm met de mogelijkheid om te bladeren. De gedelegeerde moet de methode previewControllerForDocumentInteractionController implementeren die een UIViewController retourneert voor weergave.
UIDocumentInteractionControllerDelegate beheert het tonen en verbergen van het menu en Preview. De gedelegeerde implementeert optionele methoden: documentInteractionControllerWillPresentOpenInMenu voor de verschijningsanimatie, documentInteractionControllerDidDismissOpenInMenu voor het opschonen van bronnen na het sluiten van het menu.
Belangrijke methode voor Preview — previewControllerForDocumentInteractionController, die een UIViewController moet retourneren voor het weergeven van het document. Als de methode niet is geïmplementeerd of nil retourneert, wordt Preview niet gestart. Meestal wordt self of een UINavigationController die self bevat geretourneerd.
De controller ondersteunt ook de methode documentInteractionController:didEndSendingToApplication, die wordt aangeroepen na succesvolle overdracht van het bestand naar een andere app. Dit maakt het mogelijk om het tijdelijke bestand op te schonen of de interface bij te werken na terugkeer in de app.
UIDocumentInteractionController en UIDocumentPickerViewController lossen verschillende taken op, hoewel beide met documenten werken. Het belangrijkste verschil: UIDocumentInteractionController draagt een bestaand bestand over aan een andere app, terwijl UIDocumentPickerViewController een bestand selecteert uit een externe bron voor de huidige app.
| Parameter | UIDocumentInteractionController | UIDocumentPickerViewController |
|---|---|---|
| Doel | Bestand naar een andere app verzenden | Bestand uit een andere bron selecteren |
| Bron | Eigen bestand van de app | Elke opslag (iCloud, Bestanden, externe partij) |
| Modus | Kopie van het bestand naar ontvanger | Import of Export voor de huidige app |
| Interface | Systeemmenu (Action Sheet) | Volledige bestandsbrowser |
| Retour | Retourneert geen resultaat | URL van geselecteerd bestand via gedelegeerde |
UIDocumentInteractionController vereist geen gedelegeerde voor basiswerking — het menu wordt weergegeven zelfs zonder implementatie van methoden. UIDocumentPickerViewController zonder gedelegeerde is nutteloos — het selectieresultaat wordt niet verwerkt. De keuze van API hangt af van het scenario: bestand verzenden → UIDocumentInteractionController, bestand ontvangen → UIDocumentPickerViewController.
Veelgestelde vragen
UIDocumentInteractionController — is een UIKit-controller voor voorbeeldweergave van documenten en het overdragen van bestanden tussen apps via de functie Open In en ingebouwde Preview.
Maak een instantie, stel de eigenschap url in op het doelbestand, geef de gedelegeerde op en roep presentOptionsMenu aan. Het systeem toont een lijst met apps die dit bestandstype ondersteunen.
UIDocumentInteractionController Preview — een ingebouwde viewer voor één document met basisfunctionaliteit. Quick Look (QLPreviewController) — een apart framework met ondersteuning voor batchweergave, extensies en extra bestandsformaten.
De gedelegeerde is optioneel voor basiswerking — het menu wordt zonder weergegeven. Een gedelegeerde is alleen vereist voor Preview (methode previewControllerForDocumentInteractionController) en voor het volgen van de voltooiing van bestandsverzending.
UIDocumentInteractionController verzendt een bestaand bestand van de app naar een andere. UIDocumentPickerViewController selecteert een bestand uit een externe bron in de huidige app. De eerste is voor verzenden, de tweede voor ontvangen.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook