如何更好地识别 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的主要内容,如果未能解决你的问题,请参考以下文章

三维人脸识别技术使我们更好地认识彼此

人脸情绪识别 需求分析心得

如何使用地标点识别人脸?

03识别项目中的四类干系人

如何改进hanlp命名实体识别

如何使用分水岭改进图像分割?