2010-11-29 29 views
2

Je suis nouveau dans le développement iOS.Chargement d'un fichier HTML local dans l'application de navigation

J'ai essayé de trouver une réponse à ma question mais je n'ai pas pu, j'ai trouvé quelques réponses liées mais je n'ai pas pu résoudre le problème. Mon problème est, j'ai fait une application qui a une table, et pour chaque rangée il devrait y avoir une URL qui charge un UIWebView, et devrait être chargée quand vous cliquez sur la rangée, mais elle charge une URL en ligne telle comme @ "http://www.google.com". Mais je veux charger un fichier HTML local.

Je l'ai utilisé cela pour l'URL:

 azkarDetailViewController.detailURL= 
    [[NSURL alloc] initWithString: 
    [[[azkarData objectAtIndex:indexPath.section] objectAtIndex: 
    indexPath.row] objectForKey:@"url"]]; 

Et pour chaque ligne dans le tableau que j'utilise:

[AZKAR addObject:[[NSMutableDictionary alloc] initWithObjectsAndKeys:@"THE NAME OF THE ROW",@"name",@"DayandNight.png",@"picture",@"http://www.google.com",@"url",nil]]; 

Je veux l'application pour charger un fichier local à partir des ressources (disons par exemple que le nom du fichier HTML est "index.html").

Pouvez-vous s'il vous plaît m'aider à résoudre ce problème?

Merci beaucoup ..

Répondre

1

Lorsque vous compilez votre application, la sortie est un « paquet » des fichiers et répertoires. Vous pouvez accéder au bundle via la classe NSBundle; la méthode statique + mainBundle renvoie un pointeur vers une instance de NSBundle qui représente le bundle principal de votre application.

Vous pouvez ensuite utiliser les méthodes -URLForResource:withExtension: et -URLForResource:withExtension:subdirectory de NSBundle (celles-ci nécessitent iOS 4.0 ou supérieur-il existe également des équivalents plus anciens). Si le fichier HTML est stocké dans votre répertoire principal du faisceau (ce sera le cas, sauf si vous avez créé un un répertoire différent réelle d'un groupe dans votre forfait), vous pouvez trouver son URL ainsi:

NSString *myDocumentName = @"index.html"; 
NSURL *documentURL = [[NSBundle mainBundle] URLForResource:myDocumentName extension:Nil]; 

Notez qu'il n'est pas nécessaire de spécifier l'extension séparément si elle figure déjà dans le nom du fichier.

Remarque: mon explication est un peu simplifiée (je suppose que vous n'avez pas besoin de traiter avec les localisations, sinon il y a other issues vous devriez être au courant de expliqué dans les docs).

+0

Merci beaucoup pour votre réponse rapide. Mais comme je l'ai déjà dit, je suis nouveau dans le développement d'applications iOS et c'est ma première application, et je suivais un exemple pour créer mon application. Alors pouvez-vous s'il vous plaît expliquer dans plus de détails? Alors, où dois-je mettre le ([NSString * myDocumentName .......)? devrais-je le mettre sous (- (void) createAzkarData {NSMutableArray * AZKAR;) ou dans une autre méthode? – 3madi

+0

et après avoir ajouté les lignes que vous m'avez données, comment puis-je utiliser (documentURL) dans mon code qui est ([AZKAR addObject: [[NSMutableDictionary alloc] initWithObjectsAndKeys: @ "LE NOM DE LA LIGNE", @ "nom", @ " DayandNight.png ", @" picture ", @" http://www.google.com ", @" url ", nil]];) ... Je m'excuse pour ce genre de questions mais j'ai vraiment besoin de votre aide. – 3madi

+0

J'ai posté un exemple simple pour vous à http://dl.dropbox.com/u/7437071/misc/URLLoader.zip; Vérifiez la méthode -buttonClicked de URLLoaderViewController pour voir comment vous localiser le fichier et l'utiliser pour que votre UIWebView y accède. –

1
#if __IPHONE_OS_VERSION_MIN_REQUIRED < 40000 
    // code for iOS below 4.0 
    NSURL *modelURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"WindowsTest" ofType:@"html"]]; 
#else 
    // code for iOS 4.0 ++ 
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"WindowsTest" withExtension:@"html"]; 
#endif