在Objective-C中分配标签属性?

时间:2013-12-23 23:24:34

标签: objective-c ios7 xcode5

好吧所以我正在尝试让几个UITextField在我的代码中获得“tag”属性,她就是:

- (IBAction)userDoneEditing:(id)sender
{
    _userFirstNameEntry = UserFirstName.text;
    _userLastNameEntry = UserLastName.text;
    _emailEntry = UserEmail.text;
    _userEntry = UserUser.text;
    _userPasswordEntry = UserPassword.text;

    UserFirstName.tag = 1;
    UserLastName.tag = 2;
    UserEmail.tag = 3;
    UserUser.tag = 4;
    UserPassword.tag = 5;

    if(UserFirstName.tag == 1)
    {
        NSLog(@"textField *UserFirstName did end editing");

    }
    else if(UserLastName.tag == 2)
    {
        NSLog(@"textField *UserLastName did end editing");
    }
    else if(UserEmail.tag == 3)
    {
        NSLog(@"textField *UserEmail did end editing");
    }
    else if(UserUser.tag == 4)
    {
        NSLog(@"textField *UserUser did end editing");
    }
    else if(UserPassword.tag == 5)
    {
        NSLog(@"textField *UserPassword did end editing");
    }

    [sender resignFirstResponder];
}

我正在使用故事板,我还使用属性检查器在storyboard文件中设置了标签属性,但目前我的if逻辑中的语句甚至没有工作..我只是简单地尝试设置5个UITextFields有标签属性,我做错了什么?

2 个答案:

答案 0 :(得分:1)

我看到了一些问题。

如果您在故事板中布置文本字段,并在故事板中设置标记,则没有理由在userDoneEditing:方法中再次设置标记。

此外,如果要设置标记,通常会在初始化方法(如viewDidLoad)中执行此操作,而不是在userDoneEditing:等操作方法中执行此操作。

此外,您的代码显示(UITextField.tag == 2)。但是UITextField(类对象)没有tag属性。只有UITextField的实例具有tag属性。在这种情况下,我想你想再说textField.tag

此外,您似乎将实例变量连接到文本字段(UserFirstNameUserLastName等)。您是否将这些连接到故事板中的文本字段?或者以其他方式初始化它们?如果你没有以某种方式连接它们,那么它们就是零并且试图设置它们的标签什么都不做。

此外,您指的是textField变量,但这不是您方法的参数或局部变量。您的意思是使用sender吗?

此外,如果您的实例变量已连接到文本字段,则根本不需要使用标记。将textField(或可能是sender)依次与每个实例变量进行比较会更简单:

if (sender == UserFirstName) {
    NSLog(@"UserFirstName did end editing");
} else if (sender == UserLastName) {
    NSLog(@"UserLastName did end editing");
} else ...

答案 1 :(得分:0)

什么是textField?看起来您需要这样的东西来将发件人分配到文本字段:

- (IBAction)userDoneEditing:(id)sender
{
    UITextField *textField = (UITextField *)sender;
    //...
}