iOS 6.0 Quicklook QLPreviewController errores con:"No se puede encontrar el punto de vista previa para cargar proxy"

StackOverflow https://stackoverflow.com//questions/12712890

Pregunta

Mi solicitud ha sido el uso de la QLPreviewController para mostrar los archivos de todos los tipos y en iOS 5.x , parecía hacerlo bien.

Ahora, en iOS 6.0, me sale un error y se muestra el controlador, pero con un indicador de carga constante y nunca carga nada.

El error en el log es: No se puede encontrar el punto de vista previa para cargar proxy:0x8dbf480> - file://localhost/Users/me/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/E6A58F8D-71F3-4C7A-B16E-4BA017E318E5/Documents/temp//Welcome.docx

Alguien más tiene este o otros problemas con el Quicklook en iOS 6.0?O alguna sugerencia de qué tratan?Yo lo he probado a través de iPhone y iPad con tanto empujando el controlador y la presentan.

Editar:También acabo de dar cuenta de que la URL en cuestión (el que dicen que es malo) comienza con no sólo file:// pero file://localhost mientras que el archivo original acaba de empezar con una ruta de acceso real (es decir:file:///Users).

¿Fue útil?

Solución

Bueno, después de un montón de investigación y re-creación de la tierra hasta un básico QuickLook visor, he encontrado que el error se ha registrado aún, incluso, de que PERO los documentos eran en realidad los que se muestra que no eran de mi proyecto original.

Luego traté de poner el QLPreviewController dentro de un NavigationController antes de presentarlo y terminó con el mismo problema.Yo estaba terminando la QLPreviewController en un UINavigationController antes de presentarla porque parecía ser la forma de asignar el navigationItem un botón personalizado.Eso funcionó muy bien en iOS 5.1 (como se indica más arriba), pero al parecer iOS 6.0 no le gusta esto.

La eliminación de la extra de código que envolvía el QLPreviewController en un UINavigationController parecía permitir que el documento de la pantalla.

Ejemplo de controlador de estar envuelto:

QLPreviewController* previewer = [[QLPreviewController alloc] init];
previewer.dataSource = self;
previewer.delegate = self;
[previewer setCurrentPreviewItemIndex:0];

UINavigationController* previewNavCtrl = [[UINavigationController alloc] init];
[previewNavCtrl pushViewController:previewer animated:NO];

[self presentModalViewController:previewNavCtrl animated:YES];

Cambiar a:

QLPreviewController* previewer = [[QLPreviewController alloc] init];
previewer.dataSource = self;
previewer.delegate = self;
[previewer setCurrentPreviewItemIndex:0];

[self presentModalViewController:previewer animated:YES];

Nota:de nuevo el error de Proxy parece que todavía aparecen en el registro, sin embargo

TAMBIÉN:Cualquier UIBarButtonItem personalizaciones parece que ya no funcionan sin el NavigationController =/

ACTUALIZACIÓN:He encontrado que el uso fileURLWithpath para generar el fileURL para previewItemAtIndex hecho el error original desaparece.Sin embargo, el mismo problema se produce aún cuando el documento no se carga.

Un nuevo error (que yo he visto que otras personas que tienen así) es:

No podía problema de la extensión de archivo para la ruta:/Users/me/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/339DDF48-AF93-41B5-B81E-A39440A131C6/Documents/temp/Welcome1.docx

ÚLTIMA ACTUALIZACIÓN:Aceptar la extensión del problema/error era porque yo estaba tratando de agregar manualmente %20 a los espacios (el uso de [NSString stringByAddingPercentEscapesUsingEncoding] etc.), cuando el [NSURL fileURLWithPath] debe manejar la de ya.Una vez que me quita que esto funcionó, y ahora estoy en iOS 6 yay!Entonces, el problema real no tiene nada que ver con la UINavigationController pero en realidad la URL del archivo que se pasa a través de previewItemAtIndex.

Otros consejos

Pensé que respondía a esta vieja pregunta si alguien enfrenta el mismo problema.

Cuando depura una aplicación usando Xcode, cada vez que se cambia la UUID de la aplicación. pero esto no es aplicable cuando la aplicación se está cargando desde el dispositivo.

Por ejemplo: obtuve caminos siguientes para la misma aplicación.

Ruta del documento: Archivo: /// Var / Mobile / Aplicaciones / CBF533A7-C19A-4336-A92C-DC1A48242A8A / DOCUMENTOS / Ruta del documento: Archivo: /// Var / Mobile / Aplicaciones / ADB99D3B-EACA-482D-BB8A-0C12B340A044 / DOCUMENTOS /

Esto se puede superar agregando siguiendo en el - (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index

NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES ) objectAtIndex:0];
NSURL *localDocumentsDirectoryURL = [NSURL fileURLWithPath:documentsDirectoryPath];
NSURL *fileURL =  [localDocumentsDirectoryURL URLByAppendingPathComponent:fileName isDirectory:NO];
return fileURL;

* El nombre de archivo es solo nombre de archivo (medoc.pdf) donde puede encontrar en la carpeta de documentos.

Descargué el archivo de la URL remota y guardó localmente, Luego visualizo el PDF usando el QLPREViewController .in IOS 6 está funcionando.

Primero, guardé el archivo de URL remoto usando el siguiente código:

NSString *local_location;

    NSString *path = [[NSBundle mainBundle] pathForResource:@"sampleData" ofType:@"plist"];
        path = NSTemporaryDirectory();
    local_location= [path stringByAppendingPathComponent:[NSString stringWithFormat:@"My_Invoice.pdf"]];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString: remoteurl]];
        [request setDownloadDestinationPath:local_location];
        [request startSynchronous];


For showing the Pdf :



QLPreviewController* preview = [[QLPreviewController alloc] init];
        preview.dataSource = self;
        [self presentModalViewController:preview animated:YES];





QLPreviewController delegate methods are :




- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
{
    return 1;
}

- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{

    return [NSURL fileURLWithPath:local_location];


}

1)

nsmutablearray * SamplePDF= [[NSMUTABLEARRARY Alloc] initwithOthjects: @ "sam1.pdf", @ "sam2.pdf", @ "sam3.pdf", @ "sam4.pdf", nil];

// Arrastre el archivo PDF en el directorio Strong TextDocument

2)

qlpreviewcontroller * PreviewController= [[QLPreviewController Alloc] en eso]; prevéscontroller.datasource= yo; prevéscontroller.currentpreviewitemindex= [indexpath row]; [Auto PresentModalViewController: PreviewController animado: Sí];

3) #pragma mark qlpreviewcontrollerdatasource

// Devuelve el número de elementos que el controlador de vista previa debe obtener una vista previa

- (nsinteger) numberofpreviewitemsinpreviewcontroller: (QLPReviewController *) AnteriorController {

retorno [SamplePDF Count];

}

// Devuelve el elemento que el controlador de vista previa debe obtener una vista previa

- (id) Vista previaController: (QLPreviewController *) PreviewController PreviewIdematIndex: (NSINGEGER) Índice {

nstring * DocumentDirectoryPath= [[NSBUNDLE MainBundle] ResourcePath];

NSString *dataPath =[documentsDirectoryPath stringByAppendingPathComponent:[samplepdf objectAtIndex:index]];

NSURL *url = [NSURL fileURLWithPath:dataPath isDirectory:YES];  
return url;

}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top