一部のコードがバックグラウンドで実行されている間、アラート ビューを表示する必要があります。このために、次のコードを実装しました。
//this is loading alert
-(void)showAlert:(NSString *)message {
// UIAlertView *alert;
alert11 = [[UIAlertView alloc] initWithTitle:@"Updates" message:message delegate:self
cancelButtonTitle:@"OK" otherButtonTitles: nil];
#ifndef IOS5_1
[alert11 autorelease];
#endif
[alert11 show];
}
-(void) showUpdates1:(NSString *)data {
isUpdating = true;
VideoBrowserAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
[appDelegate initApplicationDefaults];
[self performSelectorOnMainThread:@selector(showAlert:)
withObject:@"Please wait while Updating the view...."
waitUntilDone:YES];
[appDelegate openExhibitView1];
//this is update completed alert
[VideoBrowserAppDelegate addUpdateLog:@"Update is completed" showLog:TRUE calledFrom:nil];
}
しかし、performSelectorOnMainThread(..) に来ている間、アラートが表示されますが、秒で消えます。その後、openExhibitView1()
完全に実行され、再びアラートが正しく表示されます。アップデートアラートのOKボタンを再度クリックすると、ロードアラートが表示されます。しかし、これは公平ではありません。openExhibitView1()
OKボタンをクリックしない限り、バックグラウンドで実行されるまでロードアラートを表示する必要があります。