如何更好地识别 UITextField
Posted
技术标签:
【中文标题】如何更好地识别 UITextField【英文标题】:how to identify UITextField in a better way 【发布时间】:2017-09-01 13:16:20 【问题描述】:我正在使用 xcode8+swift3。
我的控制器视图中有多个UITextField
。每个 UITextField 在代码中都有一个出口连接。
我知道我可以使用“tag
”来识别UITextField
,但似乎我只能使用数字作为标签(我尝试使用tag
字段的字符串值,我的Xcode总是卡住,只有数字作为标签有效)。
但我不想在我的代码中使用幻数,例如:
If (textField.tag == 0)
我想知道,在代码中是否有更好的方法或更描述性的方法来识别 UITextField?
【问题讨论】:
这就是tag
的定义:@property(nonatomic) NSInteger tag;
所以确实,你不能放文字。如果他们每个人都有一个 IBOutlet,你为什么不改用if (textField == myTextFieldForSomething)
呢?
@Larme 好点;你能回答吗?在许多情况下,这比我的方法更好。
@RobNapier 我敢肯定应该有一些已经问过的问题(可能需要找到它,肯定是关于在某些委托方法中使用对象进行检测)。如果有属性,他们通常倾向于使用标签或直接“==”(指针相等)来回答。 ***.com/questions/3747315/…***.com/questions/5747889/…等
iphone: uitextfield, multiple textfields with the same delegate?的可能重复
我认为这不是那个的副本。这个答案基本上是“使用标签”。这个问题假定了这些信息,并询问如何在 Swift 中组织它(它的模式与 ObjC 中的模式非常不同)。
【参考方案1】:
标签是正确的工具。只需创建一个枚举供他们跟踪。
enum FieldIdentifier: Int
case name = 0
case age = 1
if let fieldIdentifier = FieldIdentifier(rawValue: textField.tag)
switch fieldIdentifier
case .name: ...
case .age: ...
(请注意,Larme 关于使用==
的评论也很合适,如果您已经有网点更好。)
【讨论】:
以上是关于如何更好地识别 UITextField的主要内容,如果未能解决你的问题,请参考以下文章