2011-07-11 14 views
1

コーディングに新しく、何ヶ月も宗教的にstackoverflowを利用していた。初めて質問をする。優しくしてください。forループを使用してプログラムで複数のUITextFieldを作成する

forループを使用してプログラムで一連のUITextFieldを作成しようとしています。フィールドは "pax1name"、 "pax2name"、 "pax3name"などの名前を持つ必要があります。

私が紛失している部分は、文字列を取り、textFieldの名前にする方法です。 for-loopが実行されるたびにtextFieldを返します。

ここに私のコードがありますが、これについて間違った方法をとっていますか?前もって感謝します!

// set up the names textfields 
for (int i = 0; i < 7; i++) { 
    NSString *fieldName = [[NSString alloc] initWithFormat:@"pax%iname", (i + 1)]; 

    // I can't figure out what goes here to create a UITextField with the name of fieldName 

    textField = [[UITextField alloc] initWithFrame:CGRectMake(15, (15 + (i * 40)), 400, 40)]; 
    textField.borderStyle = UITextBorderStyleRoundedRect; 
    textField.font = [UIFont systemFontOfSize:15.0]; 
    textField.autocorrectionType = UITextAutocorrectionTypeNo; 
    textField.clearButtonMode = UITextFieldViewModeWhileEditing; 
    textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 

    [namesViewController addSubview: textField]; 

    [fieldName release]; 
    [textField release]; 
} 
+0

+1あなたの最初の質問が完全で、明確で、コードを含んでいます。よくやった。 –

+0

@ダンレイおかげさまで!私は昨夜、ホリデイインエクスプレスに泊まったという事実にそれを借りています。 – wannabeacoder

答えて

1

通常、UIViewプロパティtagを使用します。ループに[textField setTag:<youCustomTag>]を使用して値を設定します。変数itagはNSStringではなくNSUIntegerを想定しています。

その後、正しいテキストフィールドにアクセスするには、[[namesViewController view] viewWithTag:<yourCustomTag>]とします。

BUT、ビューコントローラ用に複数のテキストフィールドを作成する必要がありますか?単一のテキストフィールドを作成し、ユーザが行をタップしたときにオンデマンドでタグプロパティを設定すると、より洗練されたソリューションが得られるかもしれません。それがあなたのために働くかどうかは分かりません。

+0

助けてくれた皆様に感謝します!この回答が最も役立ちましたので、私はそれを受け入れています。他の誰かが役に立つと思ったら、私がやったことを投稿します。 – wannabeacoder

+0

あなたは大歓迎です。私はあなたのviewWithTagのためにnamesViewConrollerのビューを呼び出さなければならないので、コードサンプルを編集しました:。 –

1

あなたはこれについて間違った方法を行ってきたと思います。 UITextFieldには「名前」というプロパティはありません。コントロールを識別するには、そのtagプロパティを使用できます。このコードを参照してください:

for (int i = 0; i < 7; i++) { 

    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(...)]; 
    textField.tag = i + 1; 
    ... 
} 
0

UITextFieldsには名前がありません。あなたはおそらく、これらのことが基本的に名前と値のペアの大きなハッシュであるHTML世界から来ているでしょう。ココアタッチではそうではありません。 @Florian Mielkeによると、それぞれには.tagというintプロパティがあります。これはおそらく設定したいものです。

1

あなたがテキストフィールドの名前を言うとき、私は、表示されるテキストを設定するのではなく、変数名を意味すると推測しています。私。ループ内で変数を作成したいが後でそれらを名前で個別に参照できるようにする必要があります。

この場合、実行したいことはできません。あなたができることは、後で便利なアクセスのために配列にそれらを貼り付けることです。

NSMutableArray *paxNameFields = [[NSMutableArray alloc] init]; // before your loop 
[paxNameFields addObject: textField]; // inside the loop 
[paxNameFields objectAtIndex: 5]; //sometime later use the 6th field 

それとも、ただあなたがtagプロパティを確認する/設定することができ、後でデリゲートコールバックに渡されているUITextFieldのかを識別できるようにしたい場合。

関連する問題