Iphone 在加载完整页面之前,活动指示器不显示

Iphone 在加载完整页面之前,活动指示器不显示,iphone,activity-indicator,Iphone,Activity Indicator,我希望在加载整个网页之前显示我的活动指示器。请使用一些示例程序或博客帮助我。谢谢 webView = [[UIWebView alloc] initWithFrame:webFrame]; webView.backgroundColor = [UIColor greenColor]; [second.view addSubview:webView]; webView.backgroundColor = [UIColor grayColor]; webView.scalesPag

我希望在加载整个网页之前显示我的活动指示器。请使用一些示例程序或博客帮助我。谢谢

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

For me activity idicator将在3秒内创建并销毁。我希望它一直显示到网页完全加载。请帮助我。谢谢。

请向我们显示您正在执行的活动(加载网页)的代码。只有当代码将控制权返回到运行循环时,UI才会更新。如果代码阻塞了主线程(例如,使用同步NSURLConnection),则在代码完成之前,活动指示器不会开始旋转。您必须在第二个线程中完成工作或使用异步操作。

首先,不要调用[super viewwillbeen:]两次。就说一次吧。第二,您正在泄漏activityIndicator和barButton


您尚未指明停止动画调用的位置。要执行您的建议,您需要将自己设置为webView的代理,并停止webViewDidFinishLoad:中的动画。

您需要实现UIWebViewDelegate协议,以便了解您网页在UIWebView中的加载状态: -(void)webView加载:(UIWebView*)webView{ //从这里开始设置活动指示器的动画。 } -(无效)webViewDidFinishLoad:(UIWebView*)webView{ //停止在此处设置活动指示器的动画。 }

基于这些回调调用,您可以启动/停止活动指示器

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