另一个(!)活动指标问题

时间:2012-09-04 01:49:10

标签: ios uiwebview uiactivityindicatorview

那么,在阅读了关于这个问题的一堆SO帖子之后,我仍然无法解决我的活动指标问题。此指示器位于其自身视图控制器控制下的选项卡中。它有一个UIWebView视图,可以很好地加载本地html页面。该视图已加载initWithNibName,然后加载awakeFromNib。以下是我认为相关的部分:

@implementation HelpViewController
@synthesize webView = _webView;
@synthesize back = _back;
@synthesize forward = _forward;
@synthesize aI = _aI;

- (void) viewDidLoad {
_aI = [[UIActivityIndicatorView alloc]
           initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[_aI stopAnimating];

// Now add the web view

NSString *filePath = [[NSBundle mainBundle]
                      pathForResource:@"Help"
                      ofType:@"html"];

[self.view addSubview:_webView];
_webView.delegate = self;
NSURL* fileURL = [NSURL fileURLWithPath:filePath];
NSURLRequest *request = [NSURLRequest requestWithURL:fileURL];
[_webView loadRequest:request];
[super viewDidLoad];
}

-(void) webViewDidStartLoad:(UIWebView *)webView {   
[_aI startAnimating];
_back.enabled = NO;
_forward.enabled = NO;   
}

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

if (webView.canGoBack) {
    _back.enabled = YES;
    _back.highlighted = YES;
}

if (webView.canGoForward) {
    _forward.enabled = YES;
    _forward.highlighted = YES;
}
}

导航按钮工作正常。活动指示器放在笔尖中,但在主视图中,不在webView上/上/下。在属性中,我检查了Hides When Stopped。如果我检查Animating,则无论我如何浏览UIWebView,我都会看到指标始终可见并设置动画。如果我取消选中Animating,我会自动检查Hidden。在这种情况下,指示器永远不会出现。所以它要么总是开着,要么总是关闭。

我已经阅读了很多关于需要在不同线程上使用指标的情况。我不确定,但我不认为这适用于此(我加载本地html页面,但允许用户导航然后返回本地页面)。但是,我似乎有一些脱节;也许事实是指标在主视图中,但页面在webView?或者我不是用正确的方法调用东西。或者谁知道......感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您覆盖_aI中的viewDidLoad并且从未将其放置在视图层次结构中,因此您发送消息的对象永远不可见,并且放置在界面构建中的活动指示符将永远不会更改状态,这就是为什么它总是动画或隐藏。