2012-03-07 17 views
1

動的に作成されたテキストフィールドを検証しようとしています。テキストフィールドの総数は異なる場合があります。 アイデアがここで私は動的に作成されたテキストフィールドの検証

-(IBAction)validateTextFields:sender 
{ 
    self.howManyPlayers = 3; 
    int emptyFieldCounter = 1; 
    NSMutableArray *playersNames = [NSMutableArray arrayWithCapacity:self.howManyPlayers]; 

     while (self.howManyPlayers > 1) 
     { 
     self.howManyPlayers--; 
     UITextField *tmp = (UITextField *) [self.view viewWithTag:self.howManyPlayers]; 

     if (tmp.text == nil) 
     { 
      [tmp setText:[NSString stringWithFormat:@"Player %d", emptyFieldCounter]]; 
      emptyFieldCounter++; 
     } 
     [playersNames addObject:tmp.text];    
    } 
} 

問題しようとするものです。..プレイヤー1、プレイヤー2などのような文字列で空のフィールドを移入することであるがあれば、私はvalidateTextFieldsメソッドを呼び出すボタンをタッチしていることです。最初のテキストフィールドと2番目のテキストフィールドには、プレーヤー1とプレーヤー2のテキストが入力されますが、3番目のフィールドにはデータが入力されません。 また、テキストを入力すると、2番目のフィールドでボタンをタッチしてからテキストを削除して、そのフィールドにプレーヤXが挿入されていないボタンに触れていることにも気付くでしょう。

すべてのことを動作させる方法正しく?

答えて

1
は、このような二行のためにあなたのコードを変更

。 これを試してみてください。変更if (tmp.text == nil)if (tmp.text == nil || [tmp.txt isEqualToString:@""])

0

フィールドが2つしか設定されていないのは、while loopを2回だけ通過するためです。またあなたは、あなたの質問の後半部分では、あなたのwhileループ

while (self.howManyPlayers >= 1) 
{ 
    // other code here 

    self.howManyPlayers--; 
} 

の最後にデクリメントを移動する必要があり

while (self.howManyPlayers >= 1) 

する必要があり、私はあなたがコントロールからテキストを削除すると思うが、それは停止しなくても空の文字列になります。だからあなたはあなたのコードで空の文字列とnilをチェックする必要があります。私は私の答えを編集したウル2番目の質問を、忘れてしまった

while (self.howManyPlayers >= 1) //edited line 
     { 

     UITextField *tmp = (UITextField *) [self.view viewWithTag:self.howManyPlayers]; 

     if (tmp.text == nil) 
     { 
      [tmp setText:[NSString stringWithFormat:@"Player %d", emptyFieldCounter]]; 
      emptyFieldCounter++; 
     } 
     [playersNames addObject:tmp.text]; 
     self.howManyPlayers--;  // moved line  
    } 

if (tmp.text == nil || [tmp.txt isEqualToString:@""]) 
+0

はい。私はそれを修正した。今それは動作します。しかし、私の第二の質問はどうですか? "テキストを入力すると、2番目のフィールドでボタンをタッチしてからテキストを削除し、そのフィールドにプレーヤXが挿入されていないボタンに再度触れていることにも気付きます。 – foho

+0

最初の部分がうまくいくのはいいです、私は2番目の部分で私の答えを更新しました。 –

関連する問題