Скажите разницу между presentViewController
и UiNavigationController
? Могу ли я использовать presentViewController
вместо UiNavigationController
для навигации по различным представлениям в приложении?
Каков сценарий для использования?
Разница между presentViewController и UINavigationController?
Ответ 1
presentViewController
предлагает механизм отображения так называемого модального контроллера вида; то есть контроллер представления, который будет полностью контролировать ваш пользовательский интерфейс, будучи наложенным поверх верхнего контроллера.
UINavigationController
предлагает гораздо более гибкий механизм, в котором вы можете нажать новый контроллер, а затем поместить его, чтобы вернуться к предыдущему, упорядоченным способом. Представьте, что контроллеры в контроллере навигации будут просто строить последовательность слева направо.
Я думаю, что presentViewController
наиболее подходит для использования только с одним контроллером представления. Вы можете с уверенностью использовать его для складывания большего количества контроллеров представлений один поверх другого (и, следовательно, своего рода "имитировать" навигационный контроллер плохого человека), но моя ставка заключается в том, что вы быстро найдете что-то не работающее, как вы ожидали.
В частности, примером такого ограничения является следующее: когда вы отклоняете контроллер модального представления (чтобы "закрыть" его), все ваши представленные в режиме просмотра представления контроллеры (от одного и того же контроллера представления) также будут уволены по адресу один раз. Таким образом, вы просто не сможете реализовать функцию "вернуться" /навигации как таковой.
Итак, это зависит от того, что вы пытаетесь сделать.
Ответ 2
A UINavigationController
является подклассом UIViewController
, который управляет стеком диспетчеров вида и добавляет кнопку "Назад" и т.д.
presentViewController
- это метод класса UIViewController
, который вы используете для представления модального контроллера.
Ответ 3
UINavigationController
поддерживает навигационный стек для вас. Затем вы можете перемещаться по иерархическому контенту.
Если вы используете метод UIViewControllers
presentViewController
, вы в основном просто заменяете контроллер вида. для вас не поддерживается навигационный стек.
Ответ 4
UINavigationController - это класс, presentViewController - это метод экземпляра UIViewController (iOS 5 +), из которых UINavigationController является подклассом.
pushViewController - сопоставимый метод для представленияViewController. Это метод экземпляра UINavigationController, для iOS 2 +