-2

私のプログラムでは、アラートが一度だけ表示され、再度呼び出されたときに表示されません。

ボタンは、アラートを表示するかのようにタッチをキャンセルしますが、アラートは表示されません。

答えが見つかったら素晴らしいことです。ここに私のコードがあります:

for (int x = 1; x <= 9; x ++) {
    if ([[defaults objectForKey:[NSString stringWithFormat:@"fav%i",x]] isEqualToString:resultButton.currentTitle] || [[defaults objectForKey:[NSString stringWithFormat:@"fav%i",x]] isEqualToString:[NSString stringWithFormat:@"%@ Converter", resultButton.currentTitle]]) {

        UIAlertView *alertThere = [[UIAlertView alloc] initWithTitle:resultButton.currentTitle message:@"Is currently in Favorites." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil, nil];
        [alertThere show];
        [alertThere release];

        return;
    }
}

ありがとう!

4

2 に答える 2

3

リターンを移動する必要があります。ライン。

リターン; 行は for ループを停止するように指示するので、削除するだけで残りのアラートが表示されます。

また、あなたのコードは 9 を訴えますUIAlertView。これはユーザーフレンドリーではなく、Apple から拒否されると確信しています。したがって、最初のアラートを無視すると、2 番目のアラートがポップアップします。

for (int x = 1; x <= 9; x ++) {
    if ([[defaults objectForKey:[NSString stringWithFormat:@"fav%i",x]] isEqualToString:resultButton.currentTitle] || [[defaults objectForKey:[NSString stringWithFormat:@"fav%i",x]] isEqualToString:[NSString stringWithFormat:@"%@ Converter", resultButton.currentTitle]]) {

        UIAlertView *alertThere = [[UIAlertView alloc] initWithTitle:resultButton.currentTitle message:@"Is currently in Favorites." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil, nil];
        [alertThere show];
        [alertThere release];

        //return; 
    }
}

また、ifステートメントの値が true であることを確認してください。そうでない場合、アラートは表示されません。

于 2012-06-14T00:39:51.880 に答える
0

私が見つけた解決策:

それはUIGestureRecognizerの下にありました(ループとは何の関係もありませんでした)。それが呼び出すサブクラスには複数のメソッドがあります。(または、それらの線に沿った何か。)

基本的に、if{} ステートメントを使用して、これらのイベントの 1 つだけを許可します。

サブクラスのメソッドの詳細については、こちらを参照してください。

于 2012-08-09T15:37:58.490 に答える