UITextField программно, как записать введенное значение пользователем?

uitextfield
textfield
swift5
ios

#1

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

Пользователь может изменить текст. Мне нужно записать измененное значение в дату после окончания редактирования, во время (записывать любое изменение) или во время выхода из этой страницы при нажатии сохранить?
И так же как мне отлавливать, что пользователь изменяет текст, только через textfield.addtarget(… action: ()…)?
Или же стоит создать новый класс для этого textField и использовать делегат?


#2

У TextField’a есть делегат, на него нужно подписаться и уже в методах делегата можно отлавливать изменение (ввод) текста.
Вариантов для вас есть несколько

  1. сохранять при нажатии кнопки
  2. сохранять при уходе со скрина

Сохранять при любом изменении текста (добавление/удаление символа) не очень подходящий вариант, т.к. будет часто вызываться запись.

При заходе на данный скрин, вам сперва нужно прочитать ваше сохраненное значение, там где оно хранится и задать этот текст для TextField’a. Все это можно сделать в методе viewDidLoad. Это в самом простом случае. Я не знаю как у вас устроен весь скрин.


#3

Спасибо большое за такой подробный ответ, многое стало понятно!

У меня есть класс, создающий кастомную ячейку. Он вызывается каждый раз
let cell = tableView.dequeueReusableCell(withIdentifier: “Cell”, for: indexPath) as! CustomCell

Там же у меня создается TextField. Я правильно поняла, что можно сделать расширение класса CustomCell, там подписаться на делегат TextField и отлавливать изменение кода?

То есть у меня в одном классе и инициализация всего, что есть в ячейке и контроллер, правильно ли это?


#4

Для начала обучения вполне.

Отлавливать изменение можно как в ячейке, так и в самом контроллере, если его передать как делегат. Тут уже решать вам.