iOSアプリ開発の逆引き辞典

iPhone/iPadで使えるアプリ開発のTipsをまとめてみました

UIWebViewのロード中にインジゲータを表示する

UIWebViewのロード中にUINavigationBarの右アイテムにインジゲータを表示させる方法を紹介します。

UIWebViewにURLを指定するなどして、ウェブページの読み込みをおこなうとwebViewDidStartLoad:メソッドが呼ばれます。このタイミングでUIActivityIndicatorViewをナビゲーションバーの右アイテムに設定します。

 -(void)webViewDidStartLoad:(UIWebView*)webView
{ 
     UIActivityIndicatorView *actInd 
        = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
     UIBarButtonItem *actItem = [[UIBarButtonItem alloc] initWithCustomView:actInd]; 
     self.navigationItem.rightBarButtonItem = actItem; 
     [actInd startAnimating]; 
     [actInd release]; 
     [actItem release];
 }

読み込みが完了した時点で、以下のコードのようにナビゲーションバーの右アイテムを空にします。

- (void)webView:(UIWebView*)webView didFailLoadWithError:(NSError*)error
{
    self.navigationItem.rightBarButtonItem = nil;
}