Правильный способ назначения делегата - PullRequest
1 голос
/ 17 февраля 2012

Вот моя ситуация.

У меня есть ViewControllerA, и он способен загружать ViewControllerB через существующий ModViewView Controller.Теперь ViewControllerB может позже выдвинуть ViewControllerC в поле зрения.И ViewControllerB, и ViewControllerC относятся к одному классу.Как назначить ViewControllerA в качестве делегата, когда я нажимаю ViewControllerC в поле зрения?

В настоящее время я назначаю ViewControllerB делегатом ViewControllerC, который затем вызывает ViewControllerA, и я чувствую, что это не так правильно.Цепочка команд: ViewControllerC -> ViewControllerB -> ViewControllerA

Спасибо.

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Мне кажется, что дизайн немного неуклюжий. Вместо передачи делегата обратно по цепочке, почему бы просто не назначить делегат обоих ViewControllerB и ViewControllerC viewControllerA (так как они одного класса) Вам не нужно пропускать цепочку, если С не нужно общаться с Б.

Перед представлением ViewControllerB:

b.delegate = self
[self presentModalViewController:b animated:YES];

в ViewControllerB до нажатия ViewControllerC

c.delegate = self.delgate 
[self.navigationController pushViewController:c animated:YES]

таким образом, и B-> A, а также C-> A

0 голосов
/ 17 февраля 2012

Ваш дизайн (C-> B-> A) не так уж и плох, потому что он следует логике потока пользовательского интерфейса. (Вы не прыгаете с C на A напрямую.) Тем не менее, вы можете назначить A также делегатом, если хотите. Просто убедитесь, что A остается в памяти (с контроллерами модального представления, которые должны быть автоматическими).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...