2016-05-24 4 views
-3

私は多くのテキストフィールドを持っています。送信ボタンをクリックすると、空のテキストフィールドの名前を含むアラートメッセージが表示されます。条件が満たされれば長い行を入力しなくても便利です。あなたはすべてのサブビューを得ることができますボタンをクリックするとどのテキストフィールドが空であるかを表示するにはどうすればいいですか?

1)あなたは、すべてのテキストフィールドの店舗を持っているなら、あなたは

if (self.textField.text.length > 0) { 
    NSLog(@"textField is not empty"); 
} 

2のような場合には、他を使用して確認できます):

enter image description here

+0

この質問に投票すると、具体的な回答はありません。 – BangOperator

+0

@AbhinandanPratap連鎖的な投票はありません。答えのどれも実際に尋ねられていることはありません。 OPは空のすべてのフィールドのリストを表示する警告を必要とします。そして、それに加えて(しかし、答えの下の投票の原因ではない)、誰もそのような貧しい質問への答えを掲示すべきではありません。悪い質問への回答は、もっと悪い質問を促すだけです。 – rmaddy

+0

私は、あまりにも多くの人が客観的なCや他の技術を学ぶ必要がある場合、彼らはここに質問のような赤ちゃんに質問するのではなく、簡単な解決策を見つけるために自分の努力をしなければならないと思います。 – vaibhav

答えて

1

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]; 

} 
+0

2番目のオプションは良いと思います。 – Shreyank

+0

@Shreyank:うん、2番目の方がはるかに優れています。 – Lion

+0

この回答は、OPが求めていることをするものではありません。 – rmaddy

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 
} 
0

あなたは名前と思われるものによって2つの方法があります。

1)スクリーンショットに表示されるプレースホルダーのテキストが名前であるか、目的の名前に十分近い場合は、それを使用できます。空の文字列が見つかるまで、テキストフィールドを繰り返して、そのプレースホルダテキストに基づいて警告を表示します。

NSArray *textfields = @[ 
    self.textfield1, 
    self.textfield2, 
]; 

for (UITextField *tf in textfields) { 
    if (tf.text.length == 0) { 
     // Show alert with tf.placeholder 
     break; 
    } 
} 

2)あなたが特定の名前が必要な場合は、そのテキストフィールドに名前をマップする辞書を構築することができます。次に、適切なテキストフィールドを探して辞書を繰り返します。そのクラスがNSCopyingに準拠していないので、辞書は、キーとしてUITextFieldを使用することはできません

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; 
    } 
} 

は注意してください。また、テキストフィールドが検出される順序は確定的ではありません。

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() 
    } 
} 
-1

これを今すぐ行う方法はありません。

+0

1)これはあなたの質問に対する答えではありません。 2)それは単に真実ではありません。それはできます。 – rmaddy

関連する問題