如何初始化UITextField变量?

时间:2019-03-08 14:19:17

标签: swift variables initialization uitextfield

我想要一个变量,告诉我刚刚编辑了哪个文本字段。因此,变量需要具有Type UITextField。但是我怎么初始化呢?

var whichTextFieldWasEditited = UITextField

init() { }

1 个答案:

答案 0 :(得分:2)

所有UITextFields都具有您可以遵循的协议。 https://developer.apple.com/documentation/uikit/uitextfielddelegate

该协议有6种不同的方法,您正在寻找的方法是textFieldDidEndEditing

区分UITextField的最简单方法是为其分配标签。所有的UIView(和子类)都有一个标记,以便可以识别它们。

要使用此协议方法对您有利,您需要将UITextField的委托设置为“ self”(在您的情况下将作为视图控制器),并设置UITextField的标签

将它们绑在一起

class MyViewController: UIViewController, UITextFieldDelegate {

     let textField1 = UITextField() //() is the constructor for the object
     let textField2 = UITextField() 

     init(){ //some generic init
        super.init()
        textField1.delegate = self
        textField1.tag = 1
        textField2.delegate = self
        textField2.tag = 2
     }

     //protocol method
     func textFieldDidEndEditing(_ sender: UITextField){
         //since the sender is of UITextField 
         if sender.tag == 1 { //it's textField1
             //do something
         }
         if sender.tag == 2 { //it's textField2
             //do something
         }
      }
 }

注意:这只是一个骨架示例,重要的一点是您的类需要符合UITextFieldDelegate,需要为自己分配文本字段的委托,需要设置其标记,然后才能区分它们在协议方法中。