0

UIWebView を格納するビュー コントローラーがあります。右上にアクティビティ インジケーターを表示して、ユーザーが Web ページが読み込まれていることを認識できるようにします。ただし、ビルドと実行では、アクティビティ モニターは表示されません。

私は webView と呼ばれる UIWebView アウトレットと activityIndi​​cator と呼ばれる UIActivityIndi​​catorView アウトレットを持っています。

これが私の実装です:

- (void)viewDidLoad
{
    [super viewDidLoad];
    webView.delegate=self;
    [self.view addSubview:activityIndicator];
    NSString *fullURL = @"http://www.oncologyeducation.com"; NSURL *url = [NSURL URLWithString:fullURL]; NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [webView loadRequest:requestObj];
}

- (void)viewDidUnload
{
    [self setWebView:nil];
    [self setActivityIndicator:nil];
    [self setActivityIndicator:nil];
    [super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if (interfaceOrientation==UIInterfaceOrientationPortrait || interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown) {
        return NO;
    } else {
        return YES;
    }
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    return YES;
}

-(void) webViewDidStartLoad:(UIWebView *)webView{
    NSLog(@"load started");
    [activityIndicator startAnimating];
    activityIndicator.hidden = NO;
}

-(void) webViewDidFinishLoad:(UIWebView *)webView{
    NSLog(@"load finished");
    [activityIndicator stopAnimating];
    activityIndicator.hidden = YES;
}

-(void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
    [activityIndicator stopAnimating];
    activityIndicator.hidden = YES;
}
@end

私のストーリーボードには、ファイルの所有者に接続されているアクティビティ インジケーター ビューがあります。ありとあらゆるアドバイスをありがとう!

4

1 に答える 1

0

@CodaFi-そうです、それは必要ありませんでした。サブビューを追加する必要はありません。

コードを再利用したい人は、次の行を失います。

[self.view addSubview:activityIndicator]; 

xCodeはちょっと変わった動作をしていて、コンパイル時に間違ったストーリーボードをプロジェクトにコピーしていたことがわかりました。ストーリーボードの名前を変更し、プロジェクト設定で新しい名前に設定すると、インジケーターが歓喜で回転しました。

于 2012-06-15T13:26:10.630 に答える