Как очистить или сбросить историю UINavigation? - PullRequest
2 голосов
/ 27 апреля 2011

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

Текущий процесс моего приложения лучше всего описать на следующей диаграмме:

Start application -> New game -> Pick character -> Pick Color -> Start game

Вплоть до "Pick Color" я использую UINavigation, однако, когда выбран цвет, я хочу очистить историю UINavigation.

Причина этого заключается в том, что вы не можете вернуться назад после запуска игры и хотите, чтобы UINavigation с чистого листа без указания того, что вы можете вернуться назад (и это также включает в себя возврат к main menu экран).

То, как я это делаю сейчас, таково;

[self.navigationController popToRootViewControllerAnimated:YES];

GameDashboardVC *dashboard = [[GameDashboardVC alloc] initWithNibName:@"GameDashboardVC" bundle:nil];
dashboard.title = @"Dashboard"; 
dashboard.managedObjectContext = self.managedObjectContext;

[self.navigationController pushViewController:dashboard animated:YES];

[dashboard release];

Проблема в том, что он всплывает в rootViewController, но никогда не помещает панель мониторинга в стек.

Я пробовал:

[self.parentViewController.navigationController pushViewController....]

Единственное, что я не пробовал, - это вставить свою панель инструментов в сам контроллер корневого представления, но я обеспокоен, потому что я не уверен, должна ли она вообще там быть.

Следовательно, где находится правильное место для размещения такого рода функций и как очистить стек UINavigation.

Спасибо за ваше время / помощь.

Ответы [ 2 ]

1 голос
/ 31 декабря 2012

Если вы хотите сбросить UINavigation History, заново инициализируйте контроллер навигации.

если вы используете UINavigationController из класса AppDelegate. Вы можете повторно инициализировать историю навигации.

appDelegate.navigationController = [[UINavigationController alloc] init];

Выше кода будет сбрасывать историю навигации контроллера.

1 голос
/ 28 апреля 2011

Я решил эту проблему сейчас, к моему удовлетворению.

Я поместил следующий код в мой метод initWithNibName:

self.navigationItem.hidesBackButton = YES;

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

Но пока вышесказанное подойдет.

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