iPhone View Стратегия - PullRequest
       7

iPhone View Стратегия

0 голосов
/ 16 сентября 2010

Я занимаюсь разработкой приложения, но пока не получил оптимальный режим навигации.

Чтобы дать вам представление о структуре моего приложения, у меня есть основной вид, который позволяет пользователю начать новую игру или просматривать рекорды. В конце игры я хотел бы дать пользователю возможность просмотреть высокие результаты или вернуться в главное меню - у меня есть для этого режим просмотра игры.

Иерархия выглядит примерно так:

Main View
|
+--Game View
|  |
|  +--Game Over View
|     |
|     +--High Scores View
|
+--High Scores View

Я использую метод presentModalViewController для переключения из режима просмотра игры в режим просмотра игры. Это нормально, но когда я хочу вернуться к основному виду, у меня есть два слоя видов для навигации (я хочу закрыть игру поверх вида и вид игры, чтобы вернуться прямо к основному виду). Чтобы закрыть представления, я использую dismissModalViewControllerAnimated, но это не идеально для обхода нескольких представлений. Есть ли способ заменить текущий вид модели вместо открытия нового сверху?

Надеюсь, это имеет смысл. Пожалуйста, дайте мне знать, если вам нужно больше деталей.

Заранее спасибо за любую помощь.

Alan

Ответы [ 3 ]

1 голос
/ 17 сентября 2010

В дополнение к замечательному предложению Александра вы можете полностью отказаться от использования presentModelViewController:animated:.Вместо этого просто установите свойство rootViewController активного UIWindow.

После установки aViewController в качестве rootViewController, вызовите [aViewController.view becomeFirstResponder];, чтобы позволить ему реагировать на сенсорный ввод.


Если presentModelViewController:animated: походит на вызов метода, установка rootViewController походит на goto.Я думаю, что "goto" может быть более уместным здесь из-за циклического характера порядка, в котором могут быть представлены виды:

Основной вид -> Просмотр игры -> Просмотр игры -> Главный вид -> ИграВид -> Игра окончена -> и т. Д.

1 голос
/ 16 сентября 2010

Если вы вызовете -dismissModalViewController:animated: на корневом контроллере вида, он пропустит оба слоя.

0 голосов
/ 17 сентября 2010

Это не элегантно, но один из способов никогда не видеть средние виды - это иметь переходный вид (своего рода вид по умолчанию или заставку) под всем.Затем попросите все виды, которые вы хотите заменить, отменить свое возвращение к представлению перехода и попросите контроллер представления представления представить следующее модальное представление, которое будет показано на основе некоторой логики следующего состояния.У вас никогда не будет более 1 вида в глубину, поэтому не будет видно никаких средних видов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...