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

时间:2010-11-29 00:14:45

标签: iphone html url sdk local

我是iOS开发的新手。

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

我的问题是,我创建了一个有一个表的应用程序,并且对于每一行都应该有一个加载UIWebView的URL,并且应该在您单击该行时加载,但它会加载一个在线URL,例如@ “http://www.google.com”。但我希望它能加载一个本地HTML文件。

我已将此用作URL:

     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]];

所以我希望应用程序从Resources加载本地文件(例如,HTML文件的名称是“index.html”)。

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

非常感谢..

2 个答案:

答案 0 :(得分:1)

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

然后,您可以使用-URLForResource:withExtension:的{​​{1}}和-URLForResource:withExtension:subdirectory方法(这些方法需要iOS 4.0或更高版本 - 也有较旧的等价物)。如果HTML文件存储在主捆绑目录中(除非您创建了一个实际目录 - 与捆绑中的组不同),否则您可以通过以下方式找到其URL:

NSBundle

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

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

答案 1 :(得分: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