通常、networkActivityIndicatorVisibleはUIWebViewでWebページをロードしているときに表示させるものだが、UIActivityIndicatorViewなどのアクティビティ インジケータを別の用途で使用する場合、例えば、forループ中にアクティビティ インジケータを表示させる場合、同一スレッドではforループが終了するまで表示されない。このため、別スレッドを作ってそのなかで表示させる。
■スレッドの呼び出し側
-(void)hogeAction {
// スレッドを作る
[NSThread detachNewThreadSelector:@selector(activityIndicatorThread)
toTarget:self
withObject:nil];
----
forループ処理
----
----
// アクティビティ インジケータを非表示にする
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
■スレッド処理
- (void)activityIndicatorThread {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// アクティビティ インジケータを表示する
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[pool release];
}
1. hogeActionメソッドでスレッド(activityIndicatorThread)を作って起動し、activityIndicatorThreadのなかで、アクティビティ インジケータを表示する。
2. hogeActionメソッド内でforループが終了すると、アクティビティ インジケータは非表示となる。
■参考記事
http://www.iphoneexamples.com/
タグ:iPhone