У меня есть приложение с двумя segues. В одном из сеансов текущий контроллер представления становится делегатом, а другой - нет.
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"MoreOptions"]) {
UINavigationController *navigationController = segue.destinationViewController;
MoreOptionsViewController *controller = (MoreOptionsViewController *)navigationController.topViewController;
controller.delegate = self;
} else if ([segue.identifier isEqualToString:@"FullStoryView"]) {
SingleStoryViewController *detailViewController = segue.destinationViewController;
detailViewController.urlObject = sender;
}
}
Все это работает нормально, но я хотел бы лучше понять код. Я не понимаю, что мне нужно получить ссылку на MoreOptionsViewController, захватив его из navigationController.topViewController, а не просто получить его из segue.destinationViewController, как и во втором условии if. Это потому, что я устанавливаю текущий контроллер представления (self) в качестве делегата? Опять же, я не пытаюсь решить проблему, просто пытаясь лучше понять, что происходит.