2009-07-10 19 views
0

インターネットからのデータが必要なUITabBar + UINavigationControllerアプリケーションがあります。時にはそれが得られるまでにはしばらく時間がかかることがあるので、私は活動指標を示したいと思います。iPhoneのUITabBarアプリケーションのアクティビティインジケータ

私は何をしようとしていたことは、私のapplicationDidFinishLaunchingメソッドで私の窓にactivityViewを追加することです:

[window addSubview:tabBarController.view]; 
fullscreenLoadingView.hidden = YES; 
[window addSubview:fullscreenLoadingView]; 

そして私は、デフォルトの通知センターにオブザーバーとしてアプリケーションデリゲートを追加します。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startFullscreenLoading:) name:@"startFullscreenLoading" object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopFullscreenLoading:) name:@"stopFullscreenLoading" object:nil]; 

を実装し、メソッドを実装します。

- (void)startFullscreenLoading:(NSNotification *)notification { 
    fullscreenLoadingView.hidden = NO; 
} 

- (void)stopFullscreenLoading:(NSNotification *)notification { 
    fullscreenLoadingView.hidden = YES; 
} 

[[NSNotificationCenter defaultCenter] postNotificationName:@"startFullscreenLoading" object:self]; 

をしかし、私はstartFullscreenLoadingナビゲーションコントローラのいずれかから、それを使用する場合:直接applicationDidFinishLaunchingメソッドで期待どおりのローディングインジケータビューはUPPを示しメソッドが呼び出されたが、私は、ローディングインジケータビューが表示されません。何故ですか?

答えて

3

データをバックグラウンドスレッドにロードしていますか?あなたのメインスレッドはブロックされます&は他のイベントを再描画または処理することができません。

+0

私はメインスレッドでロードしていないことを理解しています。メインスレッドが最初に通知を送信し、メソッドを調整した後、データロードを行うと考えました。しかし、大丈夫です、私は、他のスレッドで読み込もうとしています。 – Jeena

+0

ありがとう、それは私の問題で、今修正されました:-) – Jeena

0

私が推測できるもっともらしいことは、インジケータビューが他のビューよりも下にあることです。それでも解決しない場合は

[[fullScreenLoadingView superView] bringSubviewToFront:fullScreenLoadingView]

を試してみて、私はfullscreenLoadingViewがまだ有効であることを確認するために-startFullscreenLoadingの内部で破壊を示唆しています。

+0

私はNSLog(@ "%@"、fullScreenLoadingView)を試しました。それがaだと言います > と[window subviews]に両方のビューが含まれています。 – Jeena

0

私のアプリでは、IBでUIActivityViewを追加し、それが他のものよりも(トップレベルのオブジェクトとして)上にあることを確認することでこれを行いました。停止すると目に見えなくなるように設定されています。

私のコードでは[activityIndi​​cator startAnimating]と表示され、[activityIndi​​cator stopAnimating]で消えるようにしました。

関連する問題