如果 TextFields 为空,将 "informative text" 添加到警报
Add "informative text" to Alert if TextFields are empty
我正在尝试编写一个 NSAlert,它会在某些 NSTextFields 为空时出现。
我有 3 个 NSTextFields,我想要一个 NSAlert 来显示列表中哪个 TextField 是空的。我可以为一个文本字段执行此操作,但是我如何编写代码让空的 NSTextFields 出现在 Alert 中?如果 Altert 中有一个文本字段为空,则应显示 "TextField 1 is empty"。如果字段 1 和字段 2 为空,则应显示 "TextField 1 is empty" 并在第二行显示 "TextField 2 is empty".
这是我的代码:
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");
}];
}
您可以通过通知自动获取信息。
- 将标签 1、2、3 分配给文本字段。
- 将 Interface Builder 中所有文本字段的委托设置为要在其中显示警报的class。
实现这个方法
- (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");}];
}
}
我会链接 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
为空来获得动态输出。
我正在尝试编写一个 NSAlert,它会在某些 NSTextFields 为空时出现。 我有 3 个 NSTextFields,我想要一个 NSAlert 来显示列表中哪个 TextField 是空的。我可以为一个文本字段执行此操作,但是我如何编写代码让空的 NSTextFields 出现在 Alert 中?如果 Altert 中有一个文本字段为空,则应显示 "TextField 1 is empty"。如果字段 1 和字段 2 为空,则应显示 "TextField 1 is empty" 并在第二行显示 "TextField 2 is empty".
这是我的代码:
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");
}];
}
您可以通过通知自动获取信息。
- 将标签 1、2、3 分配给文本字段。
- 将 Interface Builder 中所有文本字段的委托设置为要在其中显示警报的class。
实现这个方法
- (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");}]; } }
我会链接 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
为空来获得动态输出。