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