将nsstring添加到主bundle ios中的本地html文件中

时间:2012-10-14 17:24:29

标签: ios xcode uiwebview nsstring

嘿,伙计们此刻我不在家,所以我无法提供任何代码,所以我会尝试解释我的问题。 在我的ios应用程序中,我尝试使用photoswipe实现图像库,根据在uitableview中选择的餐馆,将显示不同的图像。 为了测试这个,我已经在我的主包中导入了所有必需的html,javascript,css文件,然后我在我的uiwebview中加载了index.html文件。目前,图库为每个选择的餐馆显示相同的图像,因为index.html文件保存了一些测试图像的静态URL链接,如下所示:

<!DOCTYPE html>
<html>
<head>
<title>PhotoSwipe</title>
<meta name="author" content="Ste Brennan - Code Computerlove -http://www.codecomputerlove.com/" />
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<link href="styles.css" type="text/css" rel="stylesheet" />

<link href="../photoswipe.css" type="text/css" rel="stylesheet" />

<script type="text/javascript" src="../lib/klass.min.js"></script>
<script type="text/javascript" src="../code.photoswipe-3.0.5.min.js"></script>


<script type="text/javascript">

    (function(window, PhotoSwipe){

        document.addEventListener('DOMContentLoaded', function(){

            var
                options = {},
                instance = PhotoSwipe.attach( window.document.querySelectorAll('#Gallery a'), options );

        }, false);


    }(window, window.Code.PhotoSwipe));

</script>

</head>
<body>

<div id="MainContent">

<ul id="Gallery" class="gallery">
    <!-- ---------------------------LOOK HERE------------ -->

    <li><a href="TEST IMAGE 1 URL"><img src="THUMBNAIL TEST IMAGE 1 URL" alt="Image 001" /></a></li>
    <li><a href="TEST IMAGE 2 URL"><img src="THUMBNAIL TEST IMAGE 2 URL" alt="Image 002" /></a></li>
</ul>

</div>  


</body>
</html>

是否有向这个本地html文件注入一个nsstring,其中包含指向相关餐厅的链接?

我尝试使用stringByEvaluatingJavaScriptFromString覆盖<ul>的id为“Gallery”的html内容,但这会减慢完成将图像输出到缩略图网格的过程。

有没有办法动态编辑本地index.html文件?

2 个答案:

答案 0 :(得分:1)

您可以使用NSString方法stringWithContentsOfFile:encoding:error:获取html文件的全部内容,对其进行编辑,然后使用writeToFile:atomically:encoding:error:将其设置回来。或者可以使用NSFileHandle方法进行更低级别的访问。

修改

获取文件目录:

NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

然后将文件名附加到它。

NSString *htmlFilePath = [documentsPath stringByAppendingPathComponent:@"index.html"];

并使用上述路径作为writeToFile:atomically:encoding:error:

的参数

答案 1 :(得分:1)

我需要从我的应用程序富文本编辑器中显示以前保存的HTML。我尝试了几个javascript注入解决方案,但以下NSString替换解决方案是最顺利的。

在我的详细viewDidLoad中我使用模板html文件,当用户从主uitableview中选择文档时,我会做一个简单的替换操作来放入一些以前保存的文本:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"iosDemo1" ofType:@"html"];
    NSError *error = nil;

    NSString *html = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];

    NSLog(@" html %@",html);
    // Replace text "Marker" in the template with the previously saved rich text editor html 
    NSString* modifiedHtml = [html stringByReplacingOccurrencesOfString:@"Marker" withString:self.htmlDocumentText];

    // Tell the web view to load the modified Html
    [self.webView loadHTMLString:modifiedHtml baseURL:nil];