2012-01-26 31 views
9

私は、送信ボタンを押す前にユーザーが数字を入力する必要がある(キーボードが数字パッドです)UITextFieldsがたくさんあります。送信ボタンが押されると、データが有効かどうかをチェックしたい "check"メソッドが呼び出されます。空ではありません。これは単なるtextFieldの場合は簡単ですが、私は14です。フィールドの1つまたはすべてのフィールドが空であるかどうかをチェックする単純なifステートメントが必要です....UITextFieldsが空であるかどうかをチェックする方法?

私は以下のUITextFields宣言された:number1、number2、number3など と私は、UITextField.textの値を取ることができる宣言されたフォローの文字列を持っています...彼らは宣言されています:temp1、temp2、temp3など...

私は以下のようなif文をif疑似コードにしますか?

おかげ

if (!valid) 
{ 

NSLog (@"not valid) 
} 

else 
{ 
//proceed to next method 
} 

答えて

25

私はUITextField変数を* tfieldと仮定していますので、ここに解決策があります。

このような
if (tfield.text.length > 0 || tfield.text != nil || ![tfield.text isEqual:@""]) 
{ 
    //do your work 
} 
else 
{ 
    //through error 
} 
+0

私のUITextField変数のすべてが* tfieldという名前になっているわけではないので、これはどのように動作しますか?ありがとう – Teddy13

+0

textFieldShouldReturn:(UITextField *)tfieldは、この代行関数を使用しません。ユーザーがボタンを返した後にチェックするために、上記のコードを入れません。 –

+0

これは、代わりに&&または||を使用する必要があります。 – user1686342

0
you can put like this 


    if(![temp1 isEqualToString:@""] && ![temp2 isEqualToString:@""] ... ![temp14 isEqualToString:@""]) 
    { 
    NSLog (@" valid); 
    } 
    else 
    {NSLog (@"not valid); 
} 
+0

間違った方法ではありませんか?すべてが '@" "と等しくなければ、それは有効です。 – mattjgalloway

+0

はい、私はそれを修正しました –

7

私はこのような何かが何をしたいと思います。文字列が空であるかどうかをチェックするのにちょうどisEqualToString:を使用しています。

NSString *temp1 = number1.text; 
NSString *temp2 = number2.text; 
... ///< temp3, etc 

if ([temp1 isEqualToString:@""]) { 
    // temp1 not valid 
} else if ([temp2 isEqualToString:@""]) { 
    // temp2 not valid 
} ... { 
    // temp3, etc 
} else { 
    // Valid 
} 

あなたは@" "も空白になるようにtemp1をつかむ際に空白文字をトリミングすることもできます。そのため、stringByTrimmingCharactersInSet:方法そのようNSStringさんを見てみましょう:

NSString *temp1 = [number1.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 

更新:

NSMutableArray *array = [NSMutableArray arrayWithCapacity:0]; 
[array addObject:number1.text]; 
[array addObject:number2.text]; 
... ///< number3, etc 

BOOL ok = YES; 
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    if ([obj isEqualToString:@""]) { 
     ok = NO; 
     *stop = YES; 
    } 
}]; 

if (ok) { 
    // Valid 
} else { 
    // Not valid 
} 
:あなたはあなたのような何かができるの配列でそれをしたい場合は

+0

ありがとうございましたが、私が心に留めていたことはありません...もっと単純な方法がありますか?配列に空の文字列が含まれているかどうかをチェックします。 – Teddy13

+0

それはそれを書くよりはるかに速いでしょう。配列をループして、空文字列があるかどうかを確認する必要があります。あなたがどれくらい持っているかに少し依存します。 – mattjgalloway

+0

@ Teddy13はあなたが本当にそれを望むなら、それを行う配列の方法を追加しました。 – mattjgalloway

1

何かがあなたのUITextFieldsを反復処理します:

[self.view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    if ([obj isKindOfClass:[UITextField class]]) { 
    // do your checks 
    } 
}]; 
5

またはあなただけのフィールドが空の場合はNOを返します

[myTextField hasText]; 

を呼び出すことができます。

関連する問題