私のアプリ データは Web サービスから取得され、アクティビティ インジケーターを表示するコードを実装しました。viewWillAppear() で Web サービスからデータをフェッチします。
問題は、最初に viewWillAppear() が呼び出されたときにインジケーターが 1 回だけ表示され、その後、viewWillAppear() メソッドが呼び出されるたびにインジケーターが表示されないことです。
私のコードは次のとおりです:-
-(void)viewDidAppear:(BOOL)animated
{
//Initializaing views for Acticity Indicators
loadingview = [[LoadingView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
Tickview= [[tickview alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
}
-(void)viewWillAppear:(BOOL)animated
{
Reachability *r = [Reachability reachabilityWithHostName:@"www.google.com"];
NetworkStatus internetStatus = [r currentReachabilityStatus];
if ((internetStatus == ReachableViaWiFi) || (internetStatus == ReachableViaWWAN))
{
[NSThread detachNewThreadSelector:@selector(startTheBackgroundJob) toTarget:self withObject:nil];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"Check Your Internet Connection. Internet Connection is not active" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
}
}
- (void)startTheBackgroundJob
{
[self performSelectorOnMainThread:@selector(loading) withObject:nil waitUntilDone:YES];
}
-(void)loading
{
//
//some database operations here..
//
//after that showing the activity indicator
[NSThread detachNewThreadSelector:@selector(threadAnimates:) toTarget:self withObject:nil];
//retriving data from web service..
[self retrieveData];
//than removing loadingview
[loadingview removeFromSuperview];
[loadingview setHidden:YES];
[NSThread detachNewThreadSelector:@selector(tickshow:) toTarget:self withObject:nil];
[self performSelector:@selector(tickhide:) withObject:nil afterDelay:2];
}
- (void) threadAnimates:(id)data
{
[self.view addSubview:self.loadingview];
[loadingview setHidden:NO];
}
-(void)tickshow:(id)sender
{
[self.view addSubview:Tickview];
[loadingview setHidden:NO];
}
-(void)tickhide:(id)sender
{
[Tickview removeFromSuperview];
[Tickview setHidden:YES];
}
そして、ダベギングのブレークポイントを配置すると、インジケーターが再び表示されますが、ブレークポイントを削除すると、インジケーターは表示されません。
.h ファイルとプロジェクトの両方で、loadingview と tickview 用に個別のファイルをインポートしました。
私は多くのことを試しましたが、解決策を得ることができませんでした。
私を助けてください。