0

次のテキスト フィールドがコードの 2 番目のセクションの条件を受け取ったときにアラートが必要です

self.circuit.rcdAtIan = [ICUtils nonNilString:self.rcdAtIan.text];
self.circuit.rcdAt5an = [ICUtils nonNilString:self.rcdAt5an.text];

上記のコードは正常に動作するので、今すぐ起動する必要があります。以下の方法を使用することは私の最初の考えでしたが、キーボードの辞任ごとにアラートが発生します。アラートを一度だけ表示したい。

- (void)textFieldDidEndEditing:(UITextField *)textField {
    if ([_rcdAtIan.text intValue]> 200) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"my message" delegate:nil cancelButtonTitle: @"Ok" otherButtonTitles: nil];
        [alert show];     
    }

    if ([_rcdAt5an.text intValue]> 40) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"my message" delegate:nil cancelButtonTitle: @"Ok" otherButtonTitles: nil];
        [alert show];
    }
}

おそらくブール値が必要だと思いNSUserDefaults ますか?しかし、アラートが表示されているかどうかを確認するためにそれを実装する方法がわかりません。通常、一度アラートを表示したい場合は、

 if (![@"1" isEqualToString:[[NSUserDefaults standardUserDefaults] objectForKey:@"alert"]]){
    [[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"alert"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    [alert show];

}

ただし、この場合、ページがリロードされたときにアラートを再度表示したいのですが、いずれにせよ、それがこれを解決する効率的な方法であるかどうかはわかりません

4

2 に答える 2

1

「一度」とは具体的にどういう意味ですか?アプリの実行ごとに 1 回、編集ステップごとに 1 回?

または、いつでも簡単にリセットできる 2 つの BOOL フラグを追加するだけです。

- (void)textFieldDidEndEditing:(UITextField *)textField {
  if ([_rcdAtIan.text intValue]> 200 && !alert1shown) {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"my message" delegate:nil cancelButtonTitle: @"Ok" otherButtonTitles: nil];
    alert1shown = YES;
    [alert show];
  }

  if ([_rcdAt5an.text intValue]> 40 && !alert2shown) {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"my message" delegate:nil cancelButtonTitle: @"Ok" otherButtonTitles: nil];
    alert2shown = YES;
    [alert show];
  }
}
于 2013-01-12T18:54:12.127 に答える
1

NSUserDefaults を使用しないでください。不適切です

あなたの @interface で...

    @property (assign) BOOL freshAlert1;
    @property (assign) BOOL freshAlert2;

次に、このようなもの...(「ページがリロードされた」と仮定すると、viewControllerが画面に戻ってきます)

- (void)viewDidAppear
{
     self.freshAlert1 = YES;
     self.freshAlert2 = YES;

}

if (([_rcdAtIan.text intValue]> 200) && self.freshAlert1) {
    self.freshAlert1 = NO;
    ...
   }

 if (([_rcdAt5an.text intValue]> 40) && self.freshAlert2) {
    self.freshAlert2 = NO;

     ...
     }
于 2013-01-12T18:54:56.637 に答える