0

さて、この問題に関する 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おそらく、インジケータがメイン ビューにあるのに、ページが?にあるという事実です。または、正しい方法で呼び出していません。または誰が知っている...助けてくれてありがとう!

4

1 に答える 1

2

上書き_aIviewDidLoadてビュー階層に配置しないため、メッセージを送信しているオブジェクトは表示されず、インターフェイス ビルドに配置されたアクティビティ インジケーターはその状態を決して変更しないため、常にアニメーション化または非表示になります。

于 2012-09-04T01:52:40.523 に答える