iOSアプリを作成していますが、スピナーを使用してUIAlertViewを表示する必要があります。アラートの中央にスピナーを追加しようとすると、何かがうまくいかないことがあります。通常、このアラートの直前に別のアラートがあった場合です(正確にはルールではありませんが、これが失敗に気づいた方法です)。
スピナーの作成を遅らせることで、このバグを部分的に解決しました。これが私がそれを行う方法です(アラートはメンバーUIAlertViewです):
このコードはviewDidLoadにあります:
alert = [[[UIAlertView alloc] initWithTitle:@"Loading..." message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles: nil] autorelease];
[alert show];
[self performSelector:@selector(addSpinner) withObject:nil afterDelay:0.5f];
そしてこれは私のaddSpinner関数です:
- (void) addSpinner{
UIActivityIndicatorView *indicator2 = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicator2.center = CGPointMake(alert.bounds.size.width / 2, alert.bounds.size.height - 50);
[indicator2 startAnimating];
[alert addSubview:indicator2];
[indicator2 release];
}
このソリューションは毎回機能しますが、私はそれがどのように行われるかが本当に好きではありません。アラートがポップアップしてから0.5秒後にスピナーを表示することはそれほど邪魔になりませんが、これを処理するためのより良い方法があるはずです。私はiOSの専門家でもシニアプログラマーでもありませんが、イベントを使用することはできませんか?「アラートが実際に表示されたら、addSpinner関数に移動します」のようなものですか?私はこれを行う方法がわかりません、そしてウェブ上で多くの助けを見つけることができませんでした...
誰かが私を助けてくれることを願っています!ありがとう。