UIDocumentInteractionController es un controlador de iOS para previsualizar documentos y compartir archivos entre aplicaciones. Implementa la función Open In, permitiendo al usuario abrir un archivo en cualquier aplicación compatible, enviarlo por correo o guardarlo en la nube. Según Apple Developer Documentation (2025), el controlador también admite la vista previa incorporada para ver PDF, imágenes y documentos de oficina.
Puntos Clave
UIDocumentInteractionController es una clase de UIKit que proporciona una interfaz de sistema para trabajar con documentos. A diferencia de UIDocumentPickerViewController, que selecciona archivos, este controlador trabaja con un archivo existente de la aplicación y ofrece al usuario acciones: previsualizar, abrir en otra aplicación, imprimir o enviar.
El controlador no es un ViewController — no se invoca mediante present. En su lugar, muestra un menú de acciones del sistema a través del método presentOptionsMenu o presentPreview. El menú muestra todas las aplicaciones registradas para manejar el tipo de archivo dado.
UIDocumentInteractionController está disponible desde iOS 2.0 y es una de las API más antiguas para trabajar con documentos. A pesar de su antigüedad, sigue siendo relevante para implementar la función Open In y la vista previa incorporada sin bibliotecas de terceros.
Preview es un visor de documentos incorporado proporcionado por UIDocumentInteractionController. Soporta PDF, imágenes, archivos de texto y documentos de oficina (incluyendo .doc, .xls, .ppt). La vista previa se muestra con una animación de transición similar al Quick Look estándar.
Para iniciar la vista previa, llame al método presentPreview. El controlador requiere un delegado que implemente el método previewControllerForDocumentInteractionController, que devuelve un UIViewController para mostrar el documento. Normalmente se devuelve self o un controlador de navegación.
La vista previa incorporada no requiere frameworks o licencias adicionales. Funciona con cualquier archivo cuya URL se pase a la propiedad url. Los usuarios pueden desplazarse por las páginas PDF, hacer zoom en las imágenes y copiar texto de los documentos.
Open In es la función clave de UIDocumentInteractionController. Muestra una lista de aplicaciones que pueden abrir el tipo de archivo dado. El usuario selecciona una aplicación de destino, e iOS copia el archivo en su sandbox, iniciando la aplicación para trabajar con el documento.
La lista de aplicaciones se genera automáticamente basándose en las entradas de Document Type registradas en Info.plist de otras aplicaciones. Si una aplicación registró soporte para PDF, aparecerá en el menú Open In para archivos PDF. El sistema también muestra acciones estándar: imprimir, enviar por correo, guardar en Archivos.
Open In copia el archivo — la aplicación de destino recibe su propia copia, por lo que los cambios no se guardan en la aplicación original. Si necesita edición con guardado, use UIDocumentPickerViewController en modo exportación con una URL de ámbito de seguridad.
Desde iOS 6, está disponible UIActivityViewController, que también admite el intercambio de archivos. A diferencia de UIDocumentInteractionController, UIActivityViewController muestra una hoja de actividades del sistema con soporte para AirDrop, correo, mensajes y UIActivity personalizados. Para el intercambio simple de archivos, se recomienda UIActivityViewController como una API más moderna.
Implementación de Open In mediante UIDocumentInteractionController requiere solo unas pocas líneas de código: crear una instancia, establecer la URL y el delegado, llamar a presentOptionsMenu. El controlador recopila automáticamente la lista de aplicaciones disponibles según el tipo de archivo.
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
)
}
}
Para mostrar el visor incorporado en lugar del menú Open In, use el método presentPreview. El controlador mostrará el documento a pantalla completa con capacidad de desplazamiento. El delegado debe implementar el método previewControllerForDocumentInteractionController, devolviendo un UIViewController para la visualización.
UIDocumentInteractionControllerDelegate gestiona la visualización y el cierre del menú y la vista previa. El delegado implementa métodos opcionales: documentInteractionControllerWillPresentOpenInMenu para la animación de aparición, documentInteractionControllerDidDismissOpenInMenu para la limpieza de recursos después del cierre del menú.
Un método importante para Preview es previewControllerForDocumentInteractionController, que debe devolver un UIViewController para mostrar el documento. Si el método no se implementa o devuelve nil, la vista previa no se iniciará. Normalmente se devuelve self o un UINavigationController que contiene self.
El controlador también admite el método documentInteractionController:didEndSendingToApplication, que se llama después de enviar exitosamente el archivo a otra aplicación. Esto permite limpiar archivos temporales o actualizar la interfaz después de regresar a la aplicación.
UIDocumentInteractionController y UIDocumentPickerViewController resuelven diferentes tareas, aunque ambos trabajan con documentos. La diferencia principal: UIDocumentInteractionController transfiere un archivo existente a otra aplicación, mientras que UIDocumentPickerViewController selecciona un archivo de una fuente externa para la aplicación actual.
| Parámetro | UIDocumentInteractionController | UIDocumentPickerViewController |
|---|---|---|
| Propósito | Enviar archivo a otra aplicación | Seleccionar archivo de otra fuente |
| Fuente | Archivo propio de la aplicación | Cualquier almacenamiento (iCloud, Archivos, terceros) |
| Modo | Copia del archivo al destinatario | Importar o Exportar para la aplicación actual |
| Interfaz | Menú del sistema (Action Sheet) | Navegador de archivos completo |
| Retorno | No devuelve un resultado | URL del archivo seleccionado a través del delegado |
UIDocumentInteractionController no requiere un delegado para el funcionamiento básico — el menú se mostrará incluso sin implementar métodos. UIDocumentPickerViewController sin delegado es inútil — el resultado de la selección no se procesará. La elección de la API depende del escenario: enviar un archivo → UIDocumentInteractionController, recibir un archivo → UIDocumentPickerViewController.
Preguntas Frecuentes
UIDocumentInteractionController es un controlador de UIKit para previsualizar documentos y transferir archivos entre aplicaciones mediante la función Open In y la vista previa incorporada.
Cree una instancia, establezca la propiedad url al archivo de destino, especifique el delegado y llame a presentOptionsMenu. El sistema mostrará una lista de aplicaciones que admiten el tipo de archivo dado.
UIDocumentInteractionController Preview es un visor incorporado para un solo documento con capacidades básicas. Quick Look (QLPreviewController) es un framework separado con soporte para visualización por lotes, extensiones y formatos de archivo adicionales.
El delegado es opcional para el funcionamiento básico — el menú se mostrará sin él. El delegado es obligatorio solo para Preview (el método previewControllerForDocumentInteractionController) y para rastrear la finalización del envío de archivos.
UIDocumentInteractionController envía un archivo existente de la aplicación a otra aplicación. UIDocumentPickerViewController selecciona un archivo de una fuente externa para la aplicación actual. El primero es para enviar, el segundo para recibir.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también