Я не совсем уверен, как объяснить свою проблему, но я попробую.Потерять указатель на делегат во время перехода через навигационный контроллер
Так что я пытался научиться использовать делегаты и протоколы и столкнулся с проблемой. У меня есть протокол: ButtonInPopOverWasPressed, с одним методом:
- (void)buttonWasPressed:(NSString *)buttonValue;
У меня также есть главный контроллер представления и пользовательский класс поповера со свойством:
@property (retain, nonatomic) id <ButtonInPopoverWasPressed> delegate;
В моем главном контроллере представления У меня есть кнопка и текстовую метку. Когда кнопка нажата, вы переходите к нормальному попкорпу. Я затем назначить делегата в segue.destinationViewController, чтобы быть основной контроллер представления так:
[segue.destinationViewController setDelegate:self];
Затем, когда кнопка из пирог выбран он отображается в текстовой метки на главном экране путем вызова метода протокола, что основной view прослушивает:
[self.delegate buttonWasPressed:sender.currentTitle]; // sends the title of the button pressed to the delegate
Это все работает нормально. Моя проблема началась, когда я хотел, чтобы переход popover к различным представлениям при нажатии кнопки вместо отправки информации обратно в основное представление. Но когда я создал контроллер навигации в качестве popover и установил связь со старым popover, все сломалось.
Когда я назначаю делегата segue (показано выше), он выходит с другой стороны как null, поэтому я полностью теряю возможность передать его другим подзонам и вернуть информацию к основному виду. Контроллер навигации всасывает делегата? Как получить делегата через NC к фактическим представлениям?
Я знаю, что это основы протокола и делегата, но я огляделся и, похоже, не нашел ответа, который сработал для меня.
О, ничего себе! Спасибо огромное! Я работаю над этим довольно долгое время. Я надеялся, что это будет простое решение! – Firo
@Joel Добро пожаловать –