Ответ 1
Краткий ответ: используйте контроллер навигации с "показом" segues только для реализации поведения DRILL DOWN.
Например, навигационный контроллер → Авторы → Книги → Книги
-
Для каждого уровня ниже "root" (Авторы) контроллер навигации автоматически добавляет строку заголовка и кнопку "Назад". Итак, в разделе "Книги" кнопка "Назад" автоматически называется "<Авторы".
-
Контроллеры дочернего представления должны быть подключены с помощью SHOW segues - show segues сообщают диспетчеру навигации "это отношение родитель-потомок" и вызывают ожидаемый переход в режиме "вправо-вправо". (Чтобы перепрыгнуть за пределы иерархии, например, Книги → Вход, используйте вместо этого modal segue.)
-
Корневой контроллер просмотра имеет панель навигации, в которую вы можете добавить больше кнопок на панели, но дочерние контроллеры просмотра этого не делают, поскольку они автоматически добавляются.
Пример FoodTracker
Теперь объясняется нечетное представление учебника FoodTracker в Apple Start Developing iOS Apps (Swift). ** Что происходит с этим вторым вложенным контроллером навигации? Это просто простой список блюд: нажмите на еду, чтобы показать ее в Деталь блюдо, или нажмите "Добавить в" и "Деталь еды" станет "Добавить муку".
-
Первый контроллер навигации делает My Meals корнем иерархии сверления для любого количества просмотров, "оттолкнутых" оттуда (больше не нужны контроллеры навигации для этого).
-
Но, Деталь еды используется как для показа существующей еды и добавления нового приема пищи. Чтобы добавить новый прием, нужны кнопки "Отменить" и "Сохранить". Второй контроллер навигации позволяет добавлять эти кнопки (см. 3-е место выше), создавая файл питания "Корень".
-
Отображение существующей еды - это толкающий сегмент, но добавление еды - это модальный переход (новая еда не разворачивается). Это важно: причина, по которой Add Meal не может быть просто нажата, заключается в том, что автоматическая кнопка возврата ("<My Meals") становится двусмысленной: она сохраняет или отменяет?
Поскольку "навигация" и "толчок" - это очень общие термины, и потому что приятно получать кнопку "назад", возникает соблазн думать, что навигационные контроллеры должны перемещаться из любого места в другое, но поведение предназначено только для иерархического обхода.
(Это старый вопрос, но я тоже был смущен этим как iOS n00b и, как OP, у меня все еще были вопросы.)