индикатор активности не отображается до полной загрузки страницы - PullRequest
1 голос
/ 20 января 2010

Я хочу, чтобы мой индикатор активности отображался до полной загрузки веб-страницы. Пожалуйста, помогите мне с некоторыми примерами программ или блогов. Спасибо

 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;   
}

Для меня идентификатор активности создается и уничтожается в течение 3 секунд. Я хочу, чтобы он отображался до полной загрузки веб-страницы. Пожалуйста, помогите мне. Спасибо.

Ответы [ 3 ]

1 голос
/ 20 января 2010

Во-первых, не вызывайте [super viewWillAppear:] дважды. Просто позвоните один раз. Во-вторых, вы пропускаете активность индикатора и кнопки бара.

Вы не указали, куда вы положили вызов StopAnimating. Чтобы сделать то, что вы предложили, вам нужно установить себя в качестве делегата для webView и остановить анимацию в webViewDidFinishLoad:.

1 голос
/ 20 января 2010

Вам необходимо реализовать протокол UIWebViewDelegate, чтобы получать информацию о состоянии загрузки вашей веб-страницы в UIWebView: - (void)webViewDidStartLoad:(UIWebView *)webView { //start animating your activity indicator here. } - (void)webViewDidFinishLoad:(UIWebView *)webView { //stop animating your activity indicator here. }

На основании этих обратных вызовов вы можете запускать / останавливать индикатор активности.

1 голос
/ 20 января 2010

Пожалуйста, покажите нам код действия, которое вы выполняете (загрузка веб-страницы). Пользовательский интерфейс обновляется только тогда, когда ваш код возвращает управление в цикл выполнения. Если ваш код блокирует основной поток (например, с синхронным NSURLConnection), индикатор активности не начнет вращаться, пока ваш код не завершится. Вы должны выполнять свою работу во втором потоке или использовать асинхронные операции.

...