在基于导航的应用程序中加载本地HTML文件

问题描述:

我是iOS开发新手。在基于导航的应用程序中加载本地HTML文件

我一直在试图找到我的问题的答案,但我不能,我已经找到了一些相关的答案,但我无法解决这个问题。

我的问题是,我做了一个应用程序有一个表,并且对于每一行应该有一个URL加载一个UIWebView,并且当你点击该行时应该加载,但它会加载一个在线URL作为@“http://www.google.com”。但我希望它加载一个本地HTML文件。

我已经使用这个的网址:

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

而对于表中的每一行我用:

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

所以我希望应用程序加载从资源本地文件(比如说HTML文件的名字是“index.html”)。

你能帮我解决这个问题吗?

非常感谢你..

当您编译应用程序,输出的是文件和目录的“捆绑”。您可以通过NSBundle类实际访问该包;静态方法+ mainBundle将返回一个指向表示应用程序主包的NSBundle实例的指针。

然后,您可以使用NSBundle-URLForResource:withExtension:-URLForResource:withExtension:subdirectory方法(这些方法需要iOS 4.0或更高版本 - 也有旧的等效方案)。如果HTML文件存储在你的主包目录(这将是除非你创建的情况下,实际目录不同于一组组合中的),你可以找到它的网址是这样的:

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

请注意,如果扩展名已存在于文件名中,则不必单独指定扩展名。

注意:我的解释有点过于简单(我假设你不需要处理本地化,否则有other issues你应该知道在文档中解释过)。

+0

非常感谢您的快速回复。但正如我之前所说,我是iOS应用程序开发的新手,那是我的第一个应用程序,我正在通过一个示例来制作我的应用程序。那么你能否详细解释一下?那么我应该在哪里([NSString * myDocumentName .......)?我应该把它放在( - (void)createAzkarData {NSMutableArray * AZKAR;)或其他方法吗? – 3madi 2010-11-29 01:37:32

#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