Вы можете получить навигационный контроллер в стеке VC, используя self.navigationController.Вы можете просто вызвать некоторый метод, такой как
[self.navigationController setMyString:stringToPassUp];
. Есть еще несколько способов, например, self.tabBarController для tabbarcontroller в стеке или, проще всего,
[self.parentViewController setMyString:stringToPassUp];
edit. учитывая отрицательные отзывы на приведенных выше примерах, и никто не дает лучшего объяснения, давайте обсудим правильный способ сделать это.
Если у вас есть какой-то объект (например, ваш MyViewController *controller
)) и этому объекту есть, что сказать вам, обычный подход таков:
- MyViewController получает свойство
delegate
типа (id)
- контроллера представления, создающего экземпляр MyViewController, устанавливает это свойство делегата следующим образом:
controller.delegate = self;
- MyViewController, когда ему есть что сказать, делает что-то вроде:
[self.delegate delegateMessage:arg1];
, чтобы "передать сообщение", как выположить его.
Чтобы сделать это идеально, вы можете создать свой собственный @protocol MyViewControllerDelegate
и объявить класс, который будет устанавливать controller.delegate = self;
для принятия этого протокола, включив <MyViewControllerDelegate>
линия @interface.Свойство delegate
MyViewController затем должно быть объявлено id<MyViewControllerDelegate> delegate;
, чтобы сообщения [self.delegate ...]
можно было сопоставить со спецификацией протокола.
По сути, весь API-интерфейс Cocoa Touch работает следующим образом.Просто посмотрите на идеи, как реализовать ваше взаимодействие.