Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载UIWebView时如何实现UIActivityIndicatorView?(iPhone ObjC)_Iphone_Objective C_Xcode_Activity Indicator - Fatal编程技术网

加载UIWebView时如何实现UIActivityIndicatorView?(iPhone ObjC)

加载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

我想知道如何在基于WebView的应用程序中实现activityIndicator,我编写了以下代码,但该指示器没有出现

webview在本地加载文件,因此加载速度非常快,但当加载外部页面时,加载速度很慢,我需要指示器

FirstViewController.h

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