Учитывая, что между контроллерами существуют переходы, и DetailViewController
сделал переход к PickDateController
:
Если вы используете alloc/init
, вы не получите экземпляр контроллера, созданный раскадровкой.Если между ними есть переход, вам не нужно создавать новый контроллер, а просто внедрить prepareForSegue
в свой контроллер представления, чтобы создать «обратный канал» (чтобы передать информацию обратно, вы не можете создать новый переход обратно(они идут только «in», но не «back»): вам нужно создать своего рода PickDateControllerDelegate
и свойство делегата на вашем PickDateController
. Затем вы можете установить delegate
для вашего вызова DetailViewController
, вprepareForSegue
метод вашего DetailViewController
.
Теперь вы можете получить к нему доступ через self.delegate
изнутри вашего PickDateController
и, таким образом, сообщать о любой информации до того, как ее уволят / выскочит из стека навигации.1017 * можно и нужно также использовать для информирования вызывающего контроллера о том, что он может отклонить PickDateController
(вместо отмены самого себя).
Beginning Storyboards, часть 2 - хороший справочник поделать это (вы можете использовать assign
и retain
свойства для weak
и strong
, если вы еще не используете ARC.