Как я могу инициализировать переменную UITextField? - PullRequest
0 голосов
/ 08 марта 2019

Я хотел бы иметь переменную, которая сообщает мне, какое текстовое поле было только что отредактировано.Для этого переменная должна иметь тип UITextField.Но как я могу его инициализировать?

var whichTextFieldWasEditited = UITextField

init() { }

1 Ответ

2 голосов
/ 08 марта 2019

Все поля UITextFields имеют протокол, которому вы можете соответствовать. https://developer.apple.com/documentation/uikit/uitextfielddelegate

Протокол имеет 6 различных методов, один из которых вы ищете textFieldDidEndEditing

Самый простой способ провести различие между UITextFields - это назначить им теги. Все UIViews (и подклассы) имеют тег, позволяющий их идентифицировать.

Чтобы использовать этот метод протокола в своих интересах, вам нужно установить для делегата UITextField значение «self», которое в вашем случае будет контроллером представления, а также установить теги для UITextFields

Чтобы связать все это вместе

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, вам нужно назначить делегатов вашего текстового поля себе, вам нужно установить их теги, и тогда вы сможете различать их в методах протокола.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...