Разница между настоящим ViewController и UINavigationController?

Пожалуйста, расскажите разницу между presentViewController а также UiNavigationController? Могу ли я использовать presentViewController вместо UINavigationController перемещаться по различным представлениям в приложении? Какой сценарий использовать?

4 ответа

Решение

presentViewController предлагает механизм для отображения так называемого модального контроллера вида; т. е. контроллер представления, который получит полный контроль над вашим пользовательским интерфейсом, будучи наложенным поверх представляющего контроллера.

UINavigationController предлагает гораздо более гибкий механизм, в котором вы можете нажать новый контроллер, а затем вставить его, чтобы вернуться к предыдущему упорядоченным способом. Представьте, что контроллеры в контроллере навигации будут просто строить последовательность слева направо.

я думаю что presentViewController наиболее подходит для использования только с одним представляемым контроллером одновременно. Вы, безусловно, можете использовать его, чтобы размещать больше контроллеров представления друг над другом (и таким образом "подражать" навигационному контроллеру бедняка), но я держу пари, что вы быстро обнаружите, что что-то работает не так, как вы ожидали.

В частности, примером такого ограничения является следующее: когда вы отключаете модальный контроллер представления (чтобы "закрыть" его), все ваши модально представленные контроллеры представления (из того же самого представляющего контроллера) также будут уволены сразу. Таким образом, вы просто не сможете реализовать функциональность типа "назад" / навигации.

Итак, это зависит от того, что вы пытаетесь сделать.

UINavigationController это подкласс UIViewController который управляет стеком контроллеров представления и добавляет кнопку возврата и т. д.

presentViewController это метод UIViewController класс, который вы используете для представления модального контроллера представления.

UINavigationController поддерживает стек навигации для вас. После этого вы сможете перемещаться по иерархическому содержимому.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

Если вы используете UIViewControllerspresentViewController Метод, который вы в основном просто заменить контроллер представления. стек навигации для вас не поддерживается.

UINavigationController - это класс, presentViewController - это метод экземпляра UIViewController (iOS 5 +), подклассом которого является UINavigationController.

pushViewController - это метод, сравнимый с нынешним ViewController. Это метод экземпляра UINavigationController, для iOS 2 +

Другие вопросы по тегам