Я уверен, что это есть в документации Apple или, должно быть, где-то на этом форуме был дан ответ, поскольку он кажется таким простым, но я не смог найти ни этого, ни особенно элегантного решения.
У меня есть UIViewController, который помещает представление редактирования в свой стек навигации. В режиме редактирования есть несколько полей UITextFields. Если один из них редактируется при нажатии кнопки «Назад», исходный вид '
[...] Вход в представление появится для основного представления
[...] Редактирование объекта
[...] В поле зренияБудет исчезнуть
[...] - Мы не в стеке контроллеров ... нажата кнопка "Назад"
[...] Вход в представление появится для основного вида
[...] В textFieldShouldEndEditing
[...] В textFieldEditingEnded
[...] В textFieldDidEndEditing
я хочу установить self.editedObject.name = nameField.text
до того, как метка будет установлена в viewWillAppear
для UIViewController.
Я думал о методе viewWillDisappear для EditViewController, проверяющего, является ли какое-либо из моих текстовых полей в настоящее время первым респондентом, и, если да, получение их текста и его сохранение, но это похоже на такую путаницу, с которой будет больно поддерживать, если я добавляю или изменяю текстовые поля.
Я также могу реализовать связанное действие textFieldEditingChanged
IB, чтобы установить текст в редактируемом объекте после каждого нажатия клавиши, но это также довольно много накладных расходов, поскольку мне нужно выяснить, в каком текстовом поле я нахожусь каждое нажатие клавиши (помните, я показал только имя
, но их целая куча).
Все, что мне нужно, - это завершить редактирование или знать, что редактирование будет завершено до вызова viewWillAppear в UIViewController, чтобы nameFieldLabel был правильно установлен.