我希望在加载完整网页之前显示我的活动指示器。请帮我一些示例程序或博客。谢谢
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;
}
对于我来说,活动idicator在3秒内被创建和销毁。我希望它显示直到网页完全加载。请帮帮我。谢谢。
答案 0 :(得分:1)
请向我们展示您正在执行的活动的代码(加载网页)。只有当您的代码将控制权返回到运行循环时,UI才会更新。如果您的代码阻塞主线程(例如,使用同步NSURLConnection),活动指示器将不会开始旋转,直到您的代码完成。您必须在第二个线程中完成工作或使用异步操作。
答案 1 :(得分:1)
首先,不要两次调用[super viewWillAppear:]。只需打电话一次。其次,你是在泄漏activityIndicator和barButton。
您尚未指出您已将stopAnimating电话放在何处。要执行您的建议,您需要将自己设置为webView的委托,并在webViewDidFinishLoad中停止动画:。
答案 2 :(得分:1)
您需要实现UIWebViewDelegate
协议,以便在UIWebView中了解网页的加载状态:
- (void)webViewDidStartLoad:(UIWebView *)webView {
//start animating your activity indicator here.
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//stop animating your activity indicator here.
}
根据这些回调调用,您可以启动/停止活动指示器。