prepareForSegue et les délégués

J'ai une application avec deux enchaîne. Dans l'un des enchaîne, le point de vue actuel contrôleur devient un délégué et l'autre pas.

- (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;
    }
}

Tout cela fonctionne très bien, mais je voudrais essayer de comprendre le code mieux. Ce que je ne comprends pas c'est que je dois obtenir une référence à l'MoreOptionsViewController par le saisissant de navigationController.topViewController plutôt que de simplement obtenir à partir des enchaînements.destinationViewController comme je le fais dans la seconde si la condition. Est-ce parce que je suis réglage de l'affichage actuel contrôleur (auto) en tant que délégué? Encore une fois, je ne suis pas en train de résoudre un problème, juste essayer d'obtenir une meilleure compréhension de ce qui se passe.

source d'informationauteur Sonny Parlin