1

Web ページ全体が読み込まれるまでアクティビティ インジケータを表示したいのですが、サンプル プログラムやブログを教えてください。よろしくお願いします。

 webView = [[UIWebView alloc] initWithFrame:webFrame];  
 webView.backgroundColor = [UIColor greenColor]; 
 [second.view addSubview:webView];

 webView.backgroundColor = [UIColor grayColor];
 webView.scalesPageToFit=YES;
 [webView release];
 NSString *urlAddress = storyLink;
 NSURL *url = [NSURL URLWithString:urlAddress];
 NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
 [webView loadRequest:requestObj];
 [(UIActivityIndicatorView *)[self navigationItem].rightBarButtonItem.customView startAnimating];

上記のコードを内部で使用しました

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath {}

方法。

次の方法でアクティビティインジケーターを作成しました

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

    UIActivityIndicatorView * activityIndicator = [[UIActivityIndicatorView alloc]  initWithFrame:CGRectMake(0, 0, 20, 20)];
    UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
    [self navigationItem].rightBarButtonItem = barButton;   
}

私の場合、アクティビティ idicator は 3 秒以内に作成および破棄されます。ウェブページが完全に読み込まれるまで表示されるようにしたいです。助けてください。ありがとうございます。

4

3 に答える 3

1

まず、[super viewWillAppear:] を 2 回呼び出さないでください。一度だけ呼び出してください。第二に、あなたは activityIndi​​cator と barButton を漏らしています。

stopAnimating 呼び出しをどこに置いたかを示していません。あなたが提案したことを行うには、自分自身を webView のデリゲートとして設定し、webViewDidFinishLoad: でアニメーションを停止する必要があります。

于 2010-01-20T14:36:50.053 に答える
1

あなたが実行しているアクティビティ(ウェブページの読み込み)のコードを見せてください。UI は、コードが制御を実行ループに戻した場合にのみ更新されます。コードがメイン スレッドをブロックする場合 (たとえば、同期 NSURLConnection を使用)、コードが完了するまでアクティビティ インジケーターは回転を開始しません。2 番目のスレッドで作業を行うか、非同期操作を使用する必要があります。

于 2010-01-20T14:20:08.950 に答える
1

UIWebViewDelegateUIWebView で Web ページの読み込み状態について通知を受けるには、プロトコル を実装する必要があります。

- (void)webViewDidStartLoad:(UIWebView *)webView {
  //start animating your activity indicator here.
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
  //stop animating your activity indicator here.
}

これらのコールバック呼び出しに基づいて、アクティビティ インジケーターを開始/停止できます。

于 2010-01-20T20:22:25.920 に答える