2013-12-23 26 views
0

好吧,所以我目前正在試圖讓幾個UITextFields獲得「標籤」在我的代碼性質,她是:在Objective-C中分配標籤屬性?

- (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]; 
} 

我用故事板,我也已經設置內部標記屬性故事板文件使用屬性檢查器,但目前在我的邏輯if語句甚至沒有工作..我只是簡單地試圖設置5個UITextFields具有標籤屬性,我做錯了什麼?

回答

1

我看到一些問題。

如果要在故事板中佈置文本字段並在故事板中設置標籤,則沒有必要在userDoneEditing:方法中再次設置標籤。另外,如果要設置標籤,通常會在初始化方法(如viewDidLoad)中執行此操作,而不是像userDoneEditing:這樣的操作方法。您的代碼爲(UITextField.tag == 2)。但UITextField(類對象)沒有tag屬性。只有UITextField的實例具有tag屬性。我想你的意思是在這種情況下再次說textField.tag

此外,您似乎有實例變量連接到文本字段(UserFirstName,UserLastName,等等)。你把這些連接到故事板上的文本字段嗎?或者以其他方式初始化它們?如果你沒有以某種方式連接它們,那麼它們是零,試圖設置他們的標籤什麼也不做。

另外,您指的是textField變量,但這不是您的方法的參數或局部變量。你的意思是使用sender

此外,如果您有實例變量連接到您的文本字段,則根本不需要使用標籤。這將是簡單的比較textField(或者,也許sender)到每個實例變量依次爲:

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

非常感謝你的建議,我沒有做的「textField.tag」到「變(實例變量).tag「,並且我確實連接了IBOutlets,即參考變量。但是,我會說,這是非常不必要的,我應該完全使用發件人。 – Chisx

0

什麼是textField?它看起來像你需要這樣的東西分配發件人到文本字段:

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