2012-06-27 25 views
6

que tienen una página HTML que se construye así:UIWebView URLbase y la ruta absoluta

<html> 
    <head> 
    <link rel="stylesheet" href="/style.css" /> 
    </head> 
    <body> 

    </body> 
</html> 

Se almacena en mi directorio de documentos:

/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/12345-ID/Documents/mysite/index.html 

También he almacenado en el style.css el directorio de documentos:

/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/12345-ID/Documents/mysite/style.css 

Pero ahora, cuando intento cargar el hTML en mi vista web utilizando Thi s:

NSURL *test = [NSURL URLWithString:@"file:///Users/username/Library/Application Support/iPhone%20Simulator/5.1/Applications/12345-ID/Documents/mysite/"] 
[myWebView loadHTMLString:<the content retrieved from index.html> baseURL:test]; 

El css no está cargado, cuando interceptar la petición a la hoja de estilo con un NSURLProtocol puedo ver la solicitud es incorrecto. Se está tratando de solicitud:

archivo

: ///style.css

en lugar de la URL base completa. Ahora puedo resolver esto quitando/delante de /style.css en el archivo html. ¿Pero hay una manera fácil de resolver esto en código nativo sin modificar el html?

+0

Eso es exactamente lo que estoy usando (ver contenido) – Thys

+0

Ha intentado sacar el '/' del final de la prueba NSURL * = línea NSURL ........ Es posible que tenga una condición de barra inclinada doble, que puede estar causando su ubicación predeterminada, solo un pensamiento. – trumpetlicks

+0

No funciona :( – Thys

Respuesta

2

La eliminación de la barra fue el único solución

+0

Pero tendrá un problema una vez que la aplicación entre en funcionamiento y ya no se encuentre en el simulador en esa ruta específica ... la solución de trompetillas es válida independientemente de la ubicación de la aplicación. – darwin

+0

Debería ser posible seguir usando rutas absolutas en la vista web. Debe implementar NSURLProtocolo personalizado. Aunque requiere mucho código, estoy buscando una forma fácil de manejar esto. Una vez que lo encuentre Lo publicaré aquí. –

12

Generar su camino y URL base de la siguiente manera:

NSString *path = [[NSBundle mainBundle] bundlePath]; 
NSURL *baseURL = [NSURL fileURLWithPath:path]; 
[webView loadHTMLString:htmlString baseURL:baseURL]; 

Un gran blog sobre el tema:

http://iphoneincubator.com/blog/windows-views/uiwebview-revisited

Un SO de control de calidad sobre el tema

UIWebView and local css file

+0

Eliminar la barra fue la única solución, todavía muchas gracias por al menos intentar ayudar :) – Thys

+0

De alguna manera pensé que iba a ser así, pero hasta prueba las combinaciones ... Lo siento, no hubo una solución que se ajuste a tus necesidades. – trumpetlicks

Cuestiones relacionadas