Таким образом, я на правильном месте, если я
построить иерархическое приложение, где его
root - это навигационный контроллер?
Почти. Контроллер навигации (несмотря на то, что он является подклассом UIViewController) не контролирует представления, а скорее контроллеры представления. Контроллер nav выдает и отображает контроллеры представлений, что, в свою очередь, приводит к загрузке и отображению соответствующих представлений контроллера.
Следовательно, «корневое представление» - это фактически представление, управляемое контроллером представления, который находится в свойстве контроллера nav topViewController
.
Делегат приложения служит для удержания контроллера навигации и указания ему, какой контроллер представления сначала помещать в стек. После этого контроллеры вида сообщают контроллеру навигации, когда их нажимать и высовывать.
В противном случае вы на правильном пути. Вы всегда должны пытаться представлять информацию на мобильной платформе иерархическим образом, начиная с самого общего в верхней части и становясь более конкретным по мере детализации.
И вы не должны смущаться, находя это в замешательстве. 90% вводной / учебной информации, в том числе книги и ресурсы Apple, посвящены особенностям интерфейса, а также практически ничего не рассказывают о реальном дизайне приложения или о том, как все части концептуально сочетаются друг с другом.