1

タイトル、短いテキスト、フルサイズのテキストを含む json を返す rss フィードがあります。タイトルと短いテキストの一部が TableView に表示されます。

3 つのビューを持つ 3 つのコントローラーがあります。ビュー 1 は、json からの記事 (タイトルと短いテキスト) を含む TableView を表示します。各記事には「続きを読む」ボタンがあり、ボタンの IBAction に、viewcontroller(2) をナビゲーション コントローラーにプッシュします。コントローラーにはHTML文字列をロードするUIWebView(2番目のビュー)。文字列にはリンクが含まれています。ユーザーがリンクをタップすると、今度はリクエストを使用してモーダル ビュー コントローラーを別の WebView(3) に表示したいと思います (両方の WebView に別々のコントローラーとニブがあることに注意してください)。デリゲートは両方で適切に設定されています。コードとビジュアルツールの両方を試しました。デリゲート メソッドshouldStartLoadWithRequest で最初の WebView で、リクエスト パラメータに「http」または「www」が含まれているかどうかを確認します。これは、2 番目の WebView を呼び出したいからです。2 番目の WebView は最初はうまく機能し、ビューはモーダルで正常に表示されますが、それを閉じて同じリンクまたは別のリンクをタップすると、shouldStartLoadWithRequestデリゲート メソッドは呼び出されませんが、リンクは同じ WebView (最初のもの) に読み込まれます。 .

私はこれをグーグルで検索しましたが、私のようなケースや解決策は見つかりませんでした。私はiOSアプリ開発の経験があまりありませんが、同僚はかなり優秀で、この問題の解決策を見つけることができませんでした. コードを分解して分析しましたが、この問題の潜在的な原因は見つかりませんでした。彼は別のプロジェクトを持っていて、同じ問題を抱えています。彼は 1 つのコントローラーと 1 つの WebView (私たちのコントローラーと nib は、独自に作成)。私たちは調査とコード検査をかなり徹底的に行いました

4

1 に答える 1

2

解決策は非常に簡単だったようです。最初の WebView は明らかにそのデリゲートへの接続を失っているため、2 番目の WebView コントローラーに追加するだけです

- (void)viewWillDisappear:(BOOL)animated {
    [self.parentViewController viewWillAppear:YES];
}

そして、最初の WebView の最初のコントローラーで:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    webView_.delegate = self;
}

これが誰かに役立つことを願っています

于 2012-05-24T05:43:04.863 に答える