答案 0 :(得分:1)
有两种方法:
1)如果你有每个文本字段的出口,那么你可以使用if-else来检查
if (self.textField.text.length > 0) {
NSLog(@"textField is not empty");
}
2)您可以通过调用subviews
方法获取数组中的所有子视图。所以你可以创建一个类型为BOOL的返回类型的方法,
-(BOOL)checkTextFieldIsEmpty{
NSArray *arr = [self.view subviews];
for (int i = 0; i < arr.count; i++) {
if ([[arr objectAtIndex:i] isKindOfClass:[UITextField class]]) {
UITextField *tempTextField = (UITextField*)[arr objectAtIndex:i];
if (tempTextField.text.length >0) {
NSLog(@"textfield is not empty");
}
else{
NSLog(@"textfield is empty");
return NO;
}
}
}
return YES;
}
然后您可以在提交按钮单击时调用该方法。如果任何文本字段为空,则它将返回NO
其他YES
。如果你得到了,那就再往前走吧。
更新:
如果要在alertview上显示空textField列表,则可以执行类似
的操作 -(void)checkTextFieldIsEmpty{
NSArray *arr = [self.view subviews];
NSString *emptyTextFieldName = [[NSString alloc]init];
for (int i = 0; i < arr.count; i++) {
if ([[arr objectAtIndex:i] isKindOfClass:[UITextField class]]) {
UITextField *tempTextField = (UITextField*)[arr objectAtIndex:i];
if (tempTextField.text.length >0) {
NSLog(@"textfield is not empty");
}
else{
NSLog(@"textfield is empty");
emptyTextFieldName = [emptyTextFieldName stringByAppendingString:[NSString stringWithFormat:@"%@, ",tempTextField.placeholder]];
}
}
}
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Empty TextFiel" message:emptyTextFieldName delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
}
答案 1 :(得分:0)
可以像下面一样简单吗?
NSString *errorMessage = @"Please fill data for below fields.";
int isError = 0;
if (postalCode.text.length==0) {
errorMessage = [NSString stringWithFormat:@"%@\n\n%@", errorMessage, @"Postal Code"];
isError++;
}
if (industry.text.length==0) {
errorMessage = [NSString stringWithFormat:@"%@\n\n%@", errorMessage, @"Industry"];
isError++;
}
// now do these steps for all fields.
if (isError>=1) {
// show alert with errorMessage
// also if you specify how many fields are missed, you can use isError variable
}
答案 2 :(得分:0)
您可以采取两种方法,具体取决于您认为的名称。
1)如果屏幕截图中显示的占位符文字是名称,或者距离所需名称足够近,则只需使用该名称即可。迭代文本字段,直到找到空字段,然后根据其占位符文本显示警告。
NSArray *textfields = @[
self.textfield1,
self.textfield2,
];
for (UITextField *tf in textfields) {
if (tf.text.length == 0) {
// Show alert with tf.placeholder
break;
}
}
2)如果您需要特定名称,可以构建一个将名称映射到其文本字段的字典。然后迭代字典,寻找合适的文本字段。
NSDictionary<NSString *, UITextField *> *textfieldNameMap = @{
@"Name 1" : self.textfield1,
@"Name 2" : self.textfield2,
};
[textfieldNameMap enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSString *name = (NSString *)key;
UITextField *tf = (UITextField *)obj;
if (tf.text.length == 0) {
// Show alert using name
*stop = YES;
}
}
请注意,字典不能使用UITextField
作为键,因为该类不符合NSCopying
。另请注意,找到文本字段的顺序不确定。
答案 3 :(得分:0)
You can use this code for every text field of view controller in the button action block. Something like this -
@IBAction func SubmitButtonAction(sender: UIButton)
{
if (textField.text.isEmpty)
{
let alert = UIAlertView()
alert.title = "No Text"
alert.message = "Please Enter Text In The Box"
alert.addButtonWithTitle("Ok")
alert.show()
}
}
答案 4 :(得分:-1)
我后来发现现在没办法做到这一点。