iPhone SDK - индикатор активности WebView - PullRequest
1 голос
/ 25 января 2010

У меня большая проблема с UIWebView в iPhone SDK. У меня есть приложение TabBar с одним WebView на каждой вкладке (кроме первой).

Поскольку для загрузки представлений требуется некоторое время, я бы хотел показать индикатор активности.

Вот код, который я использую для этого:

-(void)webViewDidStartLoad:(UIWebView *) portal {

[UIApplication sharedApplication] .networkActivityIndicatorVisible = YES; }

-(void)webViewDidFinishLoad:(UIWebView *) portal{
 [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
}

Так не работает ... Мой WebView на первой вкладке называется "порталом", поэтому я ввел его выше, но та же проблема существует, если я использую WebView.

Есть идеи? Не может быть правдой, что это так сложно. Я сейчас ищу подсказку, чтобы успокоиться и не нашел ничего, что помогло бы мне создать такой (кажется, легкий) индикатор активности.

Большое спасибо за ваши усилия!

Привет из Германии Tobias

1 Ответ

6 голосов
/ 25 января 2010

Я обычно использую UIActivityIndicatorView.

Если у вас есть Навигационный контроллер поверх веб-представления, он отлично работает:

-(void)webViewDidStartLoad:(UIWebView *) portal {
UIActivityIndicatorView *actInd = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
UIBarButtonItem *actItem = [[UIBarButtonItem alloc] initWithCustomView:actInd];

self.navigationItem.rightBarButtonItem = actItem;

[actInd startAnimating];
[actInd release];
[actItem release];
}

Чтобы избавиться от индикатора:

-(void)webViewDidFinishLoad:(UIWebView *) portal{
 self.navigationItem.rightBarButtonItem = nil;
}

Если вы не используете Навигационный контроллер, я бы просто использовал более крупный стиль, UIActivityIndicatorViewStyleWhiteLarge ИЛИ поместил представление поверх темного полупрозрачного представления на экране, а затем удалил их по завершении загрузки.

...