Я собираюсь пойти дальше и сказать, что ваша идея имеет некоторые достоинства, если на каждом уровне вы действительно используете один и тот же тип данных, и у каждого уровня, возможно, есть свой делегат для управления созданием ячейки.
По сути, нет никаких причин, по которым вы не можете подкласса контроллера UINavigation добавить полностью ортогональный слой данных поверх него, потому что он не имеет ничего общего с пользовательским интерфейсом или поведением, которым управляет UINavigationController (это то, чем Apple обеспокоена, с которой вы будете возиться ). Для тех, кто против этой идеи, думайте о ней как о хранилище данных для каждой вкладки, к которому все страницы на вкладке могут обращаться, а не к каждой странице в системе, для которой нужно перейти в AppDelegate или иметь кучу синглетонов. Ну, в основном это одиночный, но, по крайней мере, тот, который уже существует и автоматически передает ссылку.
Все, что сказано, я закончу альтернативным предложением по дизайну - я думаю, что вы, вероятно, захотите сделать, это развернуть несколько слоев, повторно используя один и тот же код для генерации ячеек и тому подобное, потому что у вас одни и те же виды данных в каждый слой. Лучший подход к решению этой проблемы заключается в том, чтобы иметь один контроллер представления, который вы передаете подмножеству данных для отображения, а когда пользователь выполняет детализацию, он просто создает другой экземпляр того же контроллера представления с этим новым подмножеством данных. Этот подход гораздо лучше, чем идея заставить контроллер навигации выступать в качестве делегата таблицы для каждого уровня, потому что вам придется выполнить тонну перемонтажа, перемещаясь вперед и назад, и потребуется еще больше работы, чтобы запомнить положение прокрутки на каждом уровень для загрузки. Вот почему вы хотите продолжать детализацию, используя несколько экземпляров контроллеров представления, но несколько экземпляров не обязательно должны означать несколько классов.