0

一部の NSTextField が空のときに表示される NSAlert をコーディングしようとしています。3 つの NSTextField があり、どの TextField がリスト内で空であるかを示す NSAlert が必要です。1 つのテキスト フィールドに対して実行することは可能ですが、空の NSTextFields が Alert に表示されるようにコーディングするにはどうすればよいですか? Altert で 1 つの Textfield が空の場合、「TextField 1 is empty」となります。フィールド 1 と 2 が空の場合、「TextField 1 は空です」と表示され、2 行目には「TextField 2 は空です」と表示されます。

これが私のコードです:

if ([[TextField1 stringValue] length] == 0) {
    NSAlert* alert = [[NSAlert alloc] init];
    [alert addButtonWithTitle:@"OK"];
    [alert setMessageText:@"Error"];
    [alert setInformativeText:@"TextField 1 is empty"];
    [alert beginSheetModalForWindow:[self.view window] completionHandler:^(NSInteger result) {
        NSLog(@"Success");
    }];
} 
4

2 に答える 2

1

通知により自動的に情報を取得できます。

  • タグ 1、2、3 をテキスト フィールドに割り当てます。
  • Interface Builder のすべてのテキスト フィールドのデリゲートを、アラートを表示するクラスに設定します。
  • このメソッドを実装する

    - (void)controlTextDidChange:(NSNotification *)aNotification
    {
      NSTextField *field = [aNotification object];
      if ([[field stringValue] length] == 0) {
        NSInteger tag = field.tag;
        NSAlert* alert = [[NSAlert alloc] init];
        [alert addButtonWithTitle:@"OK"];
        [alert setMessageText:@"Error"];
        [alert setInformativeText:[NSString stringWithFormat:@"TextField %ld is empty", tag]];
        [alert beginSheetModalForWindow:[self.view window] completionHandler:^(NSInteger result) {NSLog(@"Success");}];
      }
    }
    
于 2015-09-07T16:04:46.480 に答える
0

目的の結果を得るために、if ステートメントを連鎖させます。空の文字列を設定し、すべての textField を次々とチェックします。空の場合は、文字列にエラー行を追加します。文字列を追加した後に改行を追加することを忘れないでください。

コード内の私の言葉:

NSString* errorMessage = @"";

if ([[TextField1 stringValue] length] == 0) {
    errorMessage = @"TextField 1 is empty.\n";
}

if ([[TextField2 stringValue] length] == 0) {
    errorMessage = [errorMessage stringByAppendingString:@"TextField 2 is empty.\n"];
}   

if ([[TextField3 stringValue] length] == 0) {
    errorMessage = [errorMessage stringByAppendingString:@"TextField 3 is empty."];
}

if (![errorMessage isEqualToString:@""]) {
    NSAlert* alert = [[NSAlert alloc] init];
    [alert addButtonWithTitle:@"OK"];
    [alert setMessageText:@"Error"];
    [alert setInformativeText:errorMessage];
    [alert beginSheetModalForWindow:[self.view window] completionHandler:^(NSInteger result) {
        NSLog(@"Success");
    }];
}

NSTextFieldこのようにして、どちらが空であるかに応じて動的な出力が得られます。

于 2015-09-07T16:44:10.340 に答える