首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIActivityIndicatorView不会消失

UIActivityIndicatorView不会消失
EN

Stack Overflow用户
提问于 2011-07-02 15:54:09
回答 4查看 6.6K关注 0票数 2

这似乎是一个非常简单的问题,但我真的不能让它工作。

我有我的应用程序的一部分,这将我的用户带到一个显示我的网站的WebView。作为内置的‘浏览器’经验的一部分,我想要一个UIActivityIndicator的位置,让用户知道网站正在加载。显然,当这件事完成后,我希望指示器消失。

此时,活动指示器处于动画状态,但随后将一直处于动画状态,并且不会停止或消失。

我在.h中使用的代码如下;

代码语言:javascript
复制
@interface AppSupportWebsite : UIViewController <UIWebViewDelegate> {

    IBOutlet UIActivityIndicatorView *activityIndicator;

}

@property (nonatomic, retain) UIActivityIndicatorView *activityIndicator;

@end

在我的.m文件中,我有以下代码;(缩写为仅显示活动指示器的特定代码)

代码语言:javascript
复制
@synthesize activityIndicator;


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

}

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

我已经在界面生成器中创建了一个活动指示器,并通过文件所有者通过IB将activityIndicator IBOutlet连接到白色活动指示器,但它就是不会消失。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-02 16:22:05

选择您的活动指示器,然后

cmd+1

选择“停止时隐藏”

检查您的webview.delegate=self;

代码语言:javascript
复制
- (void)webViewDidFinishLoad:(UIWebView *)webView {

    NSLog(@"finished");

    [self.activityIndicator stopAnimating];

}
票数 4
EN

Stack Overflow用户

发布于 2011-07-02 16:22:50

这只是一个暗箭,但您可能会遇到问题,因为UIWebView委托是从主线程以外的其他线程调用的。因此,您可能会因此获得一些竞争条件。

试一下这个中央调度码(GCD),让我知道它是否有效:

代码语言:javascript
复制
- (void)webViewDidFinishLoad:(UIWebView *)webView {
    dispatch_async(dispatch_get_main_queue(), ^(void) {
      [activityIndicator stopAnimating];
    });
}
票数 1
EN

Stack Overflow用户

发布于 2011-07-02 16:09:23

您是否可以向webViewDidFinishLoad方法添加一条NSLog语句(就像NSLog(@“网络已完成加载!”);)?我的猜测是这个方法没有被调用。这可能有几个原因。例如,如果您在命中方法之前释放webView,则它可能根本不调用该方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6555801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档