0

LocationServices を有効にする必要があるアプリケーションを実行しています。サービスを呼び出してエラーをキャッチすることで、それらがそうであるかどうかを確認しています。エラーの場合、位置情報サービスを有効にするようにユーザーに通知するアラートビューをポップアップ表示したいと考えています。このテストが行​​われるとき、私はすでに別の AlertView を開いています。それを閉じて、前述のダイアログ ボックスをユーザーに表示したいと思います。

現在、私は

case kCLErrorDenied: // CL access has been denied (eg, user declined location use)

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"NOTICE" 
               message:@"Sorry, this application needs your location.  Please select 'Allow' when asked to use your current location.  You don't need to be on or near the trail."
                 delegate:self
              cancelButtonTitle:nil 
              otherButtonTitles:@"EXIT"];
   [alert show];
   [alert release];
   //exit(0);
   break;

これにより、アプリが終了します。そこに NSLog 出力があったので、このケースになることがわかりました。

4

2 に答える 2

1

ここで delegate:self を指定すると、UIAlertViewDelegate で宣言されたアラート ハンドラーが検索され、見つからない場合はクラッシュします。

したがって、定義する必要があります

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

あなたのクラスで。

また、必要なタスクに役立つ UIAlertViewDelegate の他のメソッドを実装することもできます。

于 2010-07-09T07:57:54.270 に答える
0

インスタンス変数を使用して前のアラートを追跡し、メソッドを呼び出して、新しいダイアログを表示する前にその前のダイアログを閉じる必要があります。アラートのデリゲートハンドラーも必要です。

于 2010-07-09T02:12:50.617 に答える