1

こんにちは、私は家にいないので、実際にはコードを提供できないので、問題を説明しようと思います。私のiOSアプリケーションでは、フォトスワイプを使用して画像ギャラリーを実装しようとしています。これは、 uitableviewで選択されたレストランに応じて、異なる画像を表示します。これをテストするために、必要なすべてのhtml、javascript、cssファイルをメインバンドルにインポートしてから、index.htmlファイルをuiwebviewにロードしました。現在、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を挿入する方法はありますか?

を使用して、IDが「Gallery」stringByEvaluatingJavaScriptFromStringのhtmlコンテンツを上書きしようとしましたが、これにより、画像をサムネイルグリッドに出力するプロセスが遅くなります。<ul>

ローカルのindex.htmlファイルをその場で編集する方法はありますか?

4

2 に答える 2

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 に答える
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 に答える