подготовить для обсуждения и делегатов

У меня есть приложение с двумя 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. Это потому, что я устанавливаю текущий контроллер представления (сам) в качестве делегата? Опять же, я не пытаюсь решить проблему, просто пытаюсь лучше понять, что происходит.

Ответы на вопрос(2)

Ваш ответ на вопрос