2017-09-01 24 views
1

我正在使用xcode8 + swift3。如何更好地識別UITextField

我在我的控制器視圖中有多個UITextField。每個UITextField在代碼中都有一個插座連接。

我知道我可以使用「tag」來標識UITextField,但似乎我只能用號碼作爲標籤(我用字符串值試過tag場,我的Xcode總是會被卡住,只是號碼作爲標籤的作品)。

但我不希望在我的代碼喜歡用神奇的數字:

If (textField.tag == 0) { 

} 

我想知道,有沒有代碼更好的方法或更具描述性的方式來識別的UITextField?

+3

這是tag'的'定義:'@屬性(非原子)NSInteger的標籤;'所以確實,你不能放文本。如果他們每個人都有一個IBOutlet,爲什麼不用'if(textField == myTextFieldForSomething)'來代替呢? – Larme

+0

@Larme大點;你能否做出答案?在許多情況下,這是比我更好的方法。 –

+0

@RobNapier我確定應該有一些已經被問到的問題(可能需要找到它,當然是關於使用object來檢測是在某些委託方法中)。如果有屬性,它們通常傾向於用標籤或直接「==」(指針相等)來回答。 https://stackoverflow.com/questions/3747315/iphone-uitextfield-multiple-textfields-with-the-same-delegate https://stackoverflow.com/questions/5747889/two-uitableview-in-the-same-view – Larme

回答

2

標記是正確的工具。只需創建一個枚舉讓他們跟蹤。

enum FieldIdentifier: Int { 
    case name = 0 
    case age = 1 
} 

if let fieldIdentifier = FieldIdentifier(rawValue: textField.tag) { 
    switch fieldIdentifier { 
    case .name: ... 
    case .age: ... 
    } 
} 

(請注意,Larme的有關使用==評論也是合適的,如果你已經有網點比較好。)