Это серьезная проблема для меня прямо сейчас. Работа над базой кода с многоуровневыми детскими диспетчерскими представлениями размером около 4-5 слоев - это приложение для планшетов с очень высокой степенью развязки между диспетчерами viewcontrollers. Детский диспетчер просмотра 5-го уровня хочет отправить сообщение в диспетчер представления верхнего уровня, чтобы показать модальный. У 4-го уровня и 3-го уровня есть разные сообщения, так что в основном теперь у меня есть 4 протокола, и довольно сложно отправлять сообщения с таких дочерних контроллеров просмотра, вложенных в глубину в контроллер представления предков. Есть ли более простой способ сделать это?Многоуровневые контроллеры детского просмотра, где делегация становится кошмаром - как они должны общаться друг с другом?
Мы думали об использовании NSNotification, но не особенно любили его из-за его сложности в отладке и подписке, не являющейся явной зависимостью внутри нашего контроля. Мы также думали об использовании синглета, но статика и синглтоны являются злыми (правильно?) И вызывают проблемы вокруг состояния и параллелизма.
Любая помощь приветствуется. Также я понимаю, что я понимаю, что это слегка открытый вопрос, основанный на дизайне, но он имеет очень специфический прецедент (например, описанный выше).
Что вы подразумеваете под «многоуровневыми детскими контроллерами просмотра размером около 4-5 слоев»? Вы говорите о стеке контроллера навигации? Кроме того, контроллеры 3,4 и 5 должны общаться только с 1 или общаться друг с другом. – rdelmar
A-> контроллер детского просмотра B-> контроллера детского просмотра C-> контроллера детского просмотра D. Что-то происходит в D, о котором ему нужно рассказать A. Обычная делегация диктует, что протокол D, реализованный A и D, передает его C-> B-> A OR A, который проходит до D, к которому он может делегировать. Проблема в том, что все эти диспетчеры viewcontrollers разговаривают с A и друг с другом, и, следовательно, у меня есть 4-5 разных протоколов, которые имеют пересечения некоторых общих методов и некоторые разные - в основном создавая беспорядок. Лучший способ сделать это с помощью многоуровневых контроллеров детского просмотра? – Rickster
Я все еще не уверен, что понимаю иерархию контроллера. Когда вы говорите о ребенке, вы имеете в виду, как в [b addChildViewController: A]? Нет стека контроллера навигации? – rdelmar