Как получить текст из динамически создаваемого UITextField, не касаясь или не касаясь текстового поля (отключено взаимодействие с пользователем)? - PullRequest
0 голосов
/ 03 июля 2018

В моем приложении я динамически создал текстовое поле для цикла for на основе ответа сервера, я разработал для каждой строки пять текстовых полей. Здесь я должен умножить значение textfield1 и значение textfield2, затем отобразить в textfield4 и умножить textfield1 и textfield3, а затем отобразить в textfield5, поэтому здесь я отключил взаимодействие с пользователем для textfield4 и textfield5 на основе текста-заполнителя, потому что я хочу просто отобразить значения для этих текстовых полей и сделать не редактируемые поля.

Здесь я прикрепил скриншот пустых полей для этой функции:

enter image description here

Здесь я прикрепил скриншот после заполнения некоторых значений:

enter image description here

Здесь моя проблема не может получить значения textfield4 и textfield5 из-за отключения взаимодействия с пользователем. Если я включаю взаимодействие с пользователем, это означает, что я могу получить оба значения текстового поля в textFieldShouldEndEditing .

Как получить значения textfield4 и textfield5?

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Для меня самое простое решение - иметь переменную, которую вы устанавливаете с вычисленным значением текстовых полей в то же время, когда вы устанавливаете textfield4 и 5 text. Если вы хотите получить уведомление, вы можете добавить наблюдателя для его значения.

0 голосов
/ 03 июля 2018

Лучшим способом сделать это может быть размещение всего в пределах UITableView, который заполнен набором объектов, мы назовем этот объект Item. Каждый Item может иметь такие свойства, как name, quantity, squareFootPerUnit, estCost, totalSquareFoot и totalCost.

Я бы тогда создал UITableViewCell с тремя UITextFields (quantity, estCost, squareFootPerUnit), которые можно редактировать, и тремя метками (name, totalSquareFoot и totalCost). Сделайте так, чтобы UITableViewCell соответствовал UITextFieldDelegate для захвата входных данных от пользователя.

В tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) заполните UITableViewCells данными из ваших Item объектов. Получив данные quantity, estCost, squareFootPerUnit из UITextFields, выполните вычисления и присвойте ответы свойствам totalSquareFoot и totalCost в объекте Item и перезагрузите таблицу .

Существует несколько способов присвоения вычисленных значений вашим Item объектам. Обычно я использую замыкание (Swift) / блок (Objective-C) как свойство в UITableViewCell, которое я затем вызываю всякий раз, когда вычисление завершено. Передайте рассчитанные ответы в качестве параметров.

Преимущества UITableView

  1. Нет необходимости обрабатывать любые сложные координаты x & y, которые могут у вас возникнуть, если сервер вернет вам несколько Item данных.
  2. Проще поддерживать ваши Item данные с помощью объектов.
  3. Нет необходимости использовать tag объекты на представлениях или сохранять tag имен.
0 голосов
/ 03 июля 2018

Вы можете установить тег для textfield и получить textfield, используя этот тег. См. Приведенный ниже пример кода.

if let txtField = self.view.viewWithTag(123) as? UITextField {
    print("txtField.text")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...