3

UITabBarController を取得しました。バー項目の 1 つは、いくつかのボタンが付いたナビゲーション コントローラーです。ボタンの 1 つは urlRequest を開き、それを UIWebView にロードします。

NSURL * url = [NSURL URLWithString:myUrl];
NSURLRequest * urlRequest = [NSURLRequest requestWithURL:url];
UIWebView * web = [tView wView];
[web setScalesPageToFit:YES];
[web loadHTMLString:@"Loading" baseURL:nil];
[web loadRequest:urlRequest];
[self.navigationController pushViewController:tView animated:YES];

なんらかの理由で、初めてボタンをクリックしても何も起こりません。

UIWebViewDelegate プロトコルを使用して、次のようにデバッグしました。

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    NSLog(@"webViewDidStartLoad");

}

ボタンをクリックしても何も起こらず、NSLog メッセージも表示されません。戻ってボタンをもう一度クリックすると、デバッグが表示され、すべてが機能します。

これの原因は何ですか?

PSを入れた場合: [self.navigationController pushViewController:tView animated:YES];

webViewDidStarLoad メソッドでは、最初のクリックでアプリケーションがロードされないため、アプリケーションがハングします。

4

1 に答える 1

2

tView のビューがロードされていることを確認する必要があります。viewController がインスタンス化されると、そのビュー (およびそのすべての IBOutlets) はすべて nil になり、ビューが読み込まれるまでそのままになります。

2 つのオプションがあります: ロード内容を tView の -viewDidLoad メソッドに移動するか、[tView wView] を呼び出す前にビューを強制的にロードします。接続するコンセント。

于 2009-11-19T18:31:54.893 に答える