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