2

UITextFieldの値を読み取るにはどうすればよいIBActionですか? 私はUITextFieldプログラムで作成しています。そのため、 Xcodeを設定@propertyして使用することはできません。@synthesize生成するコードUITextFieldは次のとおりです。

for(i=0; i<[fieldName count]; i++)
{
    UITextField *name = [fieldName objectAtIndex:i];
    frame = CGRectMake(fromLeft, fromTop, totalWidth, totalHeight);
    name = [[[UITextField alloc] initWithFrame:frame] autorelease];
    name.borderStyle = UITextBorderStyleRoundedRect;
    name.returnKeyType = UIReturnKeyDone;
    //name.placeholder = [fieldName objectAtIndex:i];
    name.autocapitalizationType = UITextAutocapitalizationTypeWords;
    name.adjustsFontSizeToFitWidth = TRUE;
    name.keyboardType = UIKeyboardTypeDefault;

    [name addTarget:self action:@selector(doneEditing:) forControlEvents:UIControlEventEditingDidEndOnExit];   
    [scroller addSubview:name];
    fromTop = fromTop + 40;
}

ここで、ボタン クリック ( ) で各テキスト ボックスの値を読み取りたいと思いますIBAction。誰でも私を助けてもらえますか?

4

4 に答える 4

4

このようなものを使用してUITextFields、のサブビューであるすべてをループしself.view、それらのテキストを a に追加できますNSMutableArray

for (UITextField *field in self.view.subviews) {
    if ([field isKindOfClass:[UITextField class]]) {
        if ([[field text] length] > 0) {
            [someMutableArray addObject:field.text];
        }
    }
}
于 2012-09-23T12:34:52.980 に答える
2

doneEditing:あなたがこのように見えるなら、doneEditing:(id)senderあなたは言うことができます:

UITextField *field = (UITextField *)sender;
NSString *myText = field.text;

編集:

インスタンス変数として設定せずに UITextField にアクセスするには、作成時にタグ付けする必要があります。

[textField setTag:1];

次に、アクセスしたいときはいつでも、タグで親ビューから取得できます。

UITextField *myTextField = [scroller viewWithTag:1];
NSString *myString = myTextField.text;

あなたの場合、タグをi+1たとえばに設定して、すべてのテキストフィールドに一意のタグを付けます。

于 2012-09-23T12:21:46.553 に答える
0
NSString *value = sender.text;

もちろん、IBAction 内の場合。

これは、一連のテキスト フィールドと単一のボタン アクションがあることを無視します。

全体的な問題に対する最も簡単な解決策は、テキスト フィールドのセット (または配列) をインスタンス変数に格納し、ボタン アクションでそのセットを反復処理することです。しかし、それはかなり大雑把なアプローチです。おそらく、テキスト フィールド デリゲート メソッドを使用し、保存をトリガーするボタンを使用してテキスト値を配列に直接保存する方がよいでしょう。

さらに、Apple HIG は、個々のフィールドの値が相互作用しない限り、[保存] ボタンを使用するのではなく、テキスト フィールドが編集されたときにデータ モデルを更新する必要があることを通知します。

于 2012-09-23T12:22:36.137 に答える
0

次のように IBAction 関数を実装します。

-(IBAction) doneEditing:(UITextField*)sender
{
    NSString * val = sender.text;

}

UITextFieldDelegateを使用してみてください。あなたのケースには適していると思います。

各 UITextField にタグを追加すると、UITextField が認識されます。

于 2012-09-23T12:30:23.490 に答える