2017-09-01 25 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的有关使用==评论也是合适的,如果你已经有网点比较好。)