OBJ C - 如何从发件人获取文本域名称

1 variables objective-c uitextfield sender

我有几个文本域,每个都有标签,我想单独添加到一个数组.在添加它之前,我需要确定它来自哪个字段.我想对所有这些方法使用相同的方法,而不是为每个文本字段都有一个方法.

是否可以从发件人获取文本字段的变量名称?如果它们是按钮我可以使用[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
}
Run Code Online (Sandbox Code Playgroud)

rma*_*ddy 6

如果为每个文本字段添加标记,则使用标记:

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

这假设您已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
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你有插座或实例变量,那么你可以这样做:

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

其中_nameTextField_addressTextFields是文本字段的ivars.