私の最初の計画は、分割ビュー コントローラーを使用してテーブル ビューとその横に iPad アプリ用の汎用ビューを作成することでした。次に、分割ビュー コントローラーを子コントローラーとして使用できないことに気付きました。そのため、代わりにテーブル ビュー コントローラーを使用して実験してきましたが、これまでのところかなり良い結果が得られています。基本的に、選択した行に応じて使用するさまざまなビューのコンテナーとして、テーブルビューのヘッダー ビューを使用しています。唯一の未解決の問題は、Web サイトの画像が最初に表示されたときに UIWebView に表示されないことです。Web ビューを表示する別の表の行をタップすると、問題なく表示されます。そして、元のものをもう一度タップすると、それも問題なく表示されます。
どちらを先にタップしても問題ありません。画像が表示されないのは常に最初のものです。画像を表示する代わりに、画像ファイルの名前を表示します。
分割ビューコントローラーで同様のことを試したところ、この問題は発生しませんでした。
私が探しているものはありますか?それとも、してはいけないことをしなければならないことがありますか?
重要な場合、読み込まれるページは、Irfanview の HTML サムネイル ページ ジェネレーターで作成された、リモート サーバー上の単なるサムネイル ページです。
PS さらにテストを重ねた結果、期待どおりに動作しないのは実際には最初のプレゼンテーションのみです。最初とは、アプリ セッションごとの最初のセッションを意味します。はUIWebview
、テーブル ヘッダーのサブビューとして表示されます。テーブルビュー コントローラーは、ユーザーが画像をタップしたときに表示される別のコントローラーのボタンからのポップオーバーとして表示されます。これらのコントローラーなどのレイヤーをすべて閉じても、それらを再度インスタンス化すると、UIWebView
正しく表示されます。
これは、開始前にダミーをロードする可能性があることを示唆していますUIWebView
が、それは厄介なようです。
への呼び出しが 1 つだけあり、 への呼び出しwebViewDidStartLoad:
が 1 つだけあり、 への呼び出しがまったくwebViewDidFinishLoad:
ありませんwebView:didFailLoadWithError:
。
KLUDGE: クラッジは機能します。ここにあります:
テーブル ビュー コントローラーで、ブール値のプロパティを作成し、それをviewDidLoadURLHasBeenRequested
に設定します。NO
次に、次のようにリロードを要求します。
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
if (!self.URLHasBeenRequested) {
//On first pass, try a second request.
[webView loadRequest:webView.request];
self.URLHasBeenRequested = YES;//Set this flag so a duplicate request happens only the first time.
}
}