1

配列に個別に追加したい、それぞれにタグが付いたいくつかのテキストフィールドがあります。追加する前に、どのフィールドからのものかを把握する必要があります。テキストフィールドごとにメソッドを使用するのではなく、それらすべてに同じメソッドを使用したいと思います。

送信者からテキストフィールドの変数名を取得することは可能ですか? それらがボタンの場合、[sender currentTitle] を使用できますが、テキストフィールドから識別子を取得する方法がわかりません。

私はこのようなことを考えています:

- (void)makeItSo:(id)sender
{
    NSString * senderName = (UITextField*)[sender stringValue] ;
    if ([senderName isEqual: @"name"] )
        -- add name to array
    else if ([senderName isEqual: @"address"] )
        -- add address to array
}
4

3 に答える 3

6

各テキスト フィールドにタグを付ける場合は、次のタグを使用します。

- (void)makeItSo:(UITextField *)sender {
    if (sender.tag == 1) {
        // the name text field
    } else if (sender.tag == 2) {
        // the address text field
    }
}

tagこれは、IB またはコードで各テキスト フィールドのプロパティを設定したことを前提としています。

タグごとに定数を定義すると、最終的に読みやすいものになると便利です。

#define kNameTextField 1
#define kAddressTextField 2

- (void)makeItSo:(UITextField *)sender {
    if (sender.tag == kNameTextField) {
        // the name text field
    } else if (sender.tag == kAddressTextField) {
        // the address text field
    }
}

アウトレットまたはインスタンス変数がある場合は、次のことができます。

- (void)makeItSo:(UITextField *)sender {
    if (sender == _nameTextField) {
        // the name text field
    } else if (sender == _addressTextField) {
        // the address text field
    }
}

ここで_nameTextField、 と_addressTextFieldsはテキスト フィールドの ivar です。

于 2013-03-22T22:53:10.203 に答える
1

送信者からテキストフィールドの変数名を取得することは可能ですか?

いいえ、それがインスタンス変数でない限り、その場合は可能ですが、そうしない方がよいでしょう。

テキストフィールドから識別子を取得する方法がわかりません

いつものように、 :のプロパティを使用してドキュメントを読むだけで十分です。tagUIView

if ([sender tag] == SOME_CUSTOM_PRESET_VALUE) {
    // do stuff
}
于 2013-03-22T22:51:40.237 に答える
0

たとえば、次のテキスト フィールドを ivar として使用できます。

@property (weak) UITextField* textField1;  // tag=1
@property (weak) UITextField* textField2;  // tag=2
...
@property (weak) UITextField* textFieldN;  // tag=N

アクションを受け取ったら、次のことを行うだけです。

- (void)makeItSo:(id)sender
{
    // This is the searched text field
    UITextField* textField= [self valueForKey: [NSString stringWithFormat: @"textField%d",sender.tag] ];  
}

しかし、この時点で、N 個のプロパティではなく、N 個のテキスト フィールドを持つ配列である単一のプロパティを使用しないのはなぜでしょうか?

于 2013-03-22T22:57:08.893 に答える