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