1

大家好,目前我不在家,所以我无法提供任何代码,所以我将尝试解释我的问题。在我的 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 文件?

4

2 回答 2

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];
于 2013-02-20T15:16:45.367 回答
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:

于 2012-10-14T18:29:01.243 回答