У меня проблемы с пониманием того, что я могу сделать с Back BarButtonItem по умолчанию и как я могу вызвать перемотку.
Ниже приведен упрощенный макет.Я вставляю ViewController в контроллер Navigation и добавляю BarButtonItem («Show») и подключаюсь ко второму VC.Это добавляет кнопку «Назад» ко второму контроллеру, как показано ниже.![Basic Back Button](https://i.stack.imgur.com/YkH3D.png)
В первом VC я покажу пользователю некоторые детали, во втором VC будут показаны более подробные детали.С помощью кнопки «Показать» и кнопки «Назад» по умолчанию пользователь может легко перемещаться назад и вперед с ожидаемым поведением.
Моя проблема заключается в том, что пользователю будет разрешено изменить «Подробнее здесь», и мне потребуетсяпередать это первому VC после того, как пользователь откатывается назад.
Я не могу перетаскивать элементы управления с помощью значка «Назад к выходу», но я решил, что могу сделать это с помощью кнопки «Сохранить» на панели навигации, как показано,(Сначала перетащите элемент навигации наверх, затем BarButtonItem), затем перетащите элемент управления на значок «Выход».
![With Save Button](https://i.stack.imgur.com/ChxQU.png)
С помощью кнопки «Сохранить» я могуИнициировать последовательную отмотку и записать изменения обратно в мой первый VC с помощью кода, подобного следующему:
@IBAction func unwindFromSecondVC(_ sender: UIStoryboardSegue) {
if sender.source is AddCharacterViewController {
if let senderVC = sender.source as? SecondViewController {
details = senderVC.newDetails
}
}
}
Это создает проблему, когда пользователь вносит изменения, а затем нажимает кнопку «Назад», тем самым теряя изменения.
Мое предпочтительное решение состояло бы в том, чтобы кнопка «Назад» инициировала переход и передала изменения.Но это не представляется возможным.Мое второе решение состояло бы в том, чтобы кнопка возврата уведомляла о том, что перевод не был сделан, и прекращала процедуру отмены.По моим исследованиям, ни один из подходов не представляется возможным.
Как мне лучше всего решить эту проблему, предоставляя пользователю общую навигацию «Назад»?