Я видел много способов передачи данных с контроллера представления обратно в родительский элемент в стеке навигации, и хотя я думаю, что случай, который я собираюсь описать, должен быть довольно распространенным явлением, ничто из этого, похоже, не решает проблему. Что я хочу делать:Передача данных контроллеру родительского вида при нажатии на стрелку навигации
- Нажмите контроллер дочернего представления на стек навигационной панели. Я установил его свойства в контроллере родительского представления
prepareForSegue(_:sender)
. - Редактирование свойств контроллера детского представления. Пока здесь все работает.
- При нажатии на кнопку со стрелкой (в верхнем левом углу) контроллер детского просмотра должен выскочить (что происходит автоматически) и передать переданные данные обратно родительскому объекту.
Это было бы легко, если бы я мог настроить раскручивание в раскадровке, но это невозможно, так как кнопка со стрелкой отображается только во время выполнения. prepareForSegue(_:sender)
, похоже, не называется на ребенка при нажатии этой стрелки. Также нет либо canPerformUnwindSegueAction(_:fromViewController:withSender)
, либо unwindForSegue(_:towardsViewController)
или segueForUnwindingToViewController(_:fromViewController:identifier:)
либо на дочернем, либо на родительском.
Как предложено here Я мог бы переопределить метод ребенка и получить доступ к родительскому элементу из стека навигации, но родительский родитель должен иметь способ доступа к ребенку где-то, или это будет плохой дизайн, не так ли? Я благодарен за любую помощь! Я нацелен на iOS 7+.
Это частично личное предпочтение, но конструкция MVC-esque позволяет избежать этой проблемы вместе. Если ваша модель изменяется во втором VC, вы можете просто обновить ее из того же источника, когда вы вернетесь к своему 1-му VC – PeejWeej
http://stackoverflow.com/questions/19343519/pass-data-back-to-previous-viewcontroller это может помочь –
@PEEJWEEJ Но это как раз проблема, как получить доступ к родительскому при появлении дочернего элемента? – Nickkk