2011-11-12 11 views
22

Implementé un UIDocumentInteractionController para enviar archivos a otras aplicaciones. El archivo es un archivo .txt.UIDocumentInteractionController for Open In menu - No funciona

Aquí está el código:

UIDocumentInteractionController *interactionController = [[UIDocumentInteractionController alloc] init]; 
[interactionController setURL:[NSURL fileURLWithPath:filePath]]; 
[interactionController setUTI:@"public.text"]; 
[interactionController setDelegate:self]; 
[interactionController presentOpenInMenuFromBarButtonItem:actionBarButtonItem animated:YES]; 

El menú se abre bien, mostrando aplicaciones como las páginas, Dropbox, etc., como espero. Pero cuando toco uno de ellos, el menú Abrir en se cierra y no se realiza ninguna acción (el archivo no se envía y la aplicación de destino nunca se abre.

Intenté implementar los métodos de delegado documentInteractionController:canPerformAction: y documentInteractionController:performAction: para activar la copia: e imprimir :.? llamadas usando el menú de opciones (en oposición a la intemperie en el menú) y que se detuvo un menú con sólo las páginas en la lista, pero que todavía no ha funcionado

¿Cómo podría esto ser resuelto

Respuesta

49

encontré la respuesta, y es la gestión de la memoria. Creo el UIDocumentInteractionController y luego lo presento, pero no lo tengo como una variable de instancia. ARC lo desasigna antes de que h como la oportunidad de hacer cualquier cosa. Esto incluye enviar el documento a la aplicación externa.

Este error no apareció en el iPhone, pero en el iPad da un error porque la arquitectura de popover funciona de manera diferente y termina tratando de dibujar cuando se desasigna. Eso es lo que me alertó sobre el error.

+0

gracias! He estado buscando en la pila durante mucho tiempo y finalmente encontré que esta respuesta funciona para mí. – huoxinbird

+1

Esta es la respuesta para proyectos ARC. Debe declarar una propiedad para el UIDocumentInteractionController: @property (no atómico, fuerte) UIDocumentInteractionController * docController; –

+0

thnx. han pasado un par de horas. pero olvídate del arco. muchas veces una vez más. –

-4

basta con añadir el siguiente código:

[interactionController retain]; 
16

Este error también aparece en el iPhone/iPod. Solo configure:

@property (nonatomic, retain) UIDocumentInteractionController *docController; 

y se conservará y el documento se transferirá a la nueva aplicación.