Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.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
Iphone 停止网络活动指示器_Iphone_Objective C_Cocoa Touch_Xcode - Fatal编程技术网

Iphone 停止网络活动指示器

Iphone 停止网络活动指示器,iphone,objective-c,cocoa-touch,xcode,Iphone,Objective C,Cocoa Touch,Xcode,我用下面的代码加载了一个网页。一切正常,但我想停止 完成网页加载后的网络活动指示器。我们怎么知道 网页已完全加载 任何人都请帮忙 UIApplication* app = [UIApplication sharedApplication]; app.networkActivityIndicatorVisible = YES; // to stop it, set this to NO NSURL *url = [NSURL URLWithString:@"http://www.google

我用下面的代码加载了一个网页。一切正常,但我想停止 完成网页加载后的网络活动指示器。我们怎么知道 网页已完全加载

任何人都请帮忙

UIApplication* app = [UIApplication sharedApplication];
 app.networkActivityIndicatorVisible = YES; // to stop it, set this to NO

 NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
 NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];

您只需将
webView.delegate
设置为指向某个对象,并让该对象实现
webviewdiffinishload:

最简单的方法是在实例化UIWebView后添加此行

[webView setDelegate:self];
现在您将调用
webViewDidFinishLoad:
,整个方法如下所示

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}
我将进一步解释这一点,因为您将来绝对需要了解授权

UIWebView只是一个显示web数据的对象。它真的不喜欢处理所有其他的东西,因为它真的只是喜欢web数据。现在,在您的例子中,您想知道UIWebView何时完成了它最喜欢的小任务。要做到这一点,您的UIWebView向它的代理发出一声喊叫,如“Yo holmes,我现在加载完这些数据了。所以,现在就去做您现在要做的事情吧。”然后您的UIWebView继续它的快乐之路

因此,我们所做的是,通过将webView上的delgate属性设置为self,告诉UIWebView它的委托(在本例中)是我们当前的类

从那里,您可以调用UIWebView委托可用的任何方法(其全部在文档中),并让它们执行UIWebView主要用途的次要任务

[webView setDelegate:self];

有意义吗?

以下是我用来停止活动指示器的方法:

- (void)viewDidLoad 
{               
    [super viewDidLoad];

    NSString *urlAddress = [NSString stringWithFormat:@"http://www.wikipedia.com/wiki/%@", place.name];                                                     
    NSURL *url= [NSURL URLWithString: [urlAddress stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [webView loadRequest:requestObj];

    [[self webView] setDelegate:self];

}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [activityIndicator stopAnimating];
}

- (void) webViewDidStartLoad:(UIWebView *)webView {
    [activityIndicator startAnimating];
}

要在UIWebView加载请求时显示网络指示器,请使用以下代码。

#pragma mark - UIWebViewDelegate

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    return YES;
}
//For Showing NetWork Indicator in Webview
- (void)webViewDidStartLoad:(UIWebView *)webView
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

注意:
UIViewController
[webView setDelegate:self]

你能解释一下吗。我对objective c编程一无所知。非常感谢您的解释!我喜欢想象所有的物体都像贝莱尔的新鲜王子一样说话。