加载UIWebView时如何实现UIActivityIndicatorView?(iPhone ObjC)
我想知道如何在基于WebView的应用程序中实现activityIndicator,我编写了以下代码,但该指示器没有出现 webview在本地加载文件,因此加载速度非常快,但当加载外部页面时,加载速度很慢,我需要指示器 FirstViewController.h加载UIWebView时如何实现UIActivityIndicatorView?(iPhone ObjC),iphone,objective-c,xcode,activity-indicator,Iphone,Objective C,Xcode,Activity Indicator,我想知道如何在基于WebView的应用程序中实现activityIndicator,我编写了以下代码,但该指示器没有出现 webview在本地加载文件,因此加载速度非常快,但当加载外部页面时,加载速度很慢,我需要指示器 FirstViewController.h #import <UIKit/UIKit.h> @interface FirstViewController : UIViewController <UIWebViewDelegate>{ IB
#import <UIKit/UIKit.h>
@interface FirstViewController :
UIViewController <UIWebViewDelegate>{
IBOutlet UIWebView *webview1;
NSURL *urlLocation;
IBOutlet UIActivityIndicatorView *m_activity;
}
@property (nonatomic, retain) UIActivityIndicatorView *m_activity;
- (IBAction)searchbutton:(id)sender;
- (IBAction)home:(id)sender;
@end
这里的问题是,您上面发布的代码应该可以工作,除了您不在任何地方初始化指示器(可能在viewDidLoad中初始化),但是上面显示的代码应该可以工作,因为指示器已正确初始化,并且您将webview d elegate设置为视图控制器,我让它在我的一些应用程序上工作,我使用网络视图和指示器来指示何时加载…为什么在init中将活动指示器设置为零
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
//Initialization code
m_activity = nil;
}
return self;
}
从XIB调用超级初始化指示器(假设您将其连接到IB中的插座),但在初始化后,您将引用设置为nil。拆下那条线。然后返回interface builder并设置“停止时隐藏”复选框。现在,您可以简化显示指示器的代码:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[m_activity stopAnimating];
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
[m_activity startAnimating];
}
“停止时隐藏”会导致指示器在停止设置动画时隐藏。UIWebView.loading属性也可以使用 苹果的文件: @属性(非原子、只读、getter=isLoading)BOOL加载 描述 一个布尔值,指示接收器是否已完成加载内容。(只读) 如果是,则接收器仍在加载内容;否则,不会
在iOS6中,苹果似乎也解决了该属性的一些问题 您是否也需要在
didFailLoadWithError
方法中关闭它?
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[m_activity stopAnimating];
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
[m_activity startAnimating];
}