2011-12-20 11 views
10

Mam wniosek z dwoma segues. W jednym z segues bieżący kontroler widoku staje się delegatem, a drugi nie.prepareForSegue i delegaci

Wszystko to działa dobrze, ale chciałbym spróbować lepiej zrozumieć kod. Czego nie rozumiem jest to, że muszę uzyskać odwołanie do MoreOptionsViewController pobierając go od navigationController.topViewController, zamiast po prostu uzyskać go z segue.destinationViewController jak robię w drugim warunku if. Czy to dlatego, że ustawiam bieżący kontroler widoku (self) jako delegata? Ponownie, nie próbuję rozwiązać problemu, tylko staram się lepiej zrozumieć, co się dzieje.

Odpowiedz

11

Spójrz na scenorys i powinno być jasne, dlaczego tak się dzieje. Włożyłeś MoreOptionsViewController do urządzenia UINavigationController i połączyłeś go z kontrolerem nawigacji, dzięki czemu jest on destinationViewController. Jest to dość powszechne.

+0

Ahh tak, czasami odpowiedź jest w zwykłym miejscu, prawda? Dzięki. –

4

Delegat jest w dużej mierze nieistotny w kontekście twojego pytania.

Twój pierwszy port docelowy to kontroler nawigacyjny, który zawiera kontroler widoku, którego jesteś zainteresowany. naprawdę zainteresowany. Aby dostać się do tego widoku, musisz przejść kontroler nawigacyjny, ponieważ nie będzie on miał żadnych właściwości są zainteresowani ustawianiem.

Twoja druga zmiana idzie bezpośrednio do kontrolera widoku, więc możesz uzyskać do niego bezpośredni dostęp.

Powiązane problemy