#objective-c #uinavigationcontroller #history
#objective-c #контроллер uinavigationcontroller #история #uinavigationcontroller
Вопрос:
У меня есть экран настройки игры, который использует UINavigation, и я пытаюсь сбросить или очистить UINavigation, как только пользователь выбрал цвет.
Текущий процесс моего приложения лучше всего можно описать на следующей схеме:
Start application -> New game -> Pick character -> Pick Color -> Start game
До «Выбрать цвет» я использую 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....]
Единственное, что я не пробовал, это поместить мой dashboard push в сам корневой контроллер просмотра, но я обеспокоен, потому что я не уверен, что он вообще должен быть там.
Поэтому, где правильное место для размещения такого рода функциональности, и как мне очистить стек UINavigation.
Спасибо за ваше время / помощь.
Комментарии:
1. Просмотрите свое свойство UINavigationController ViewControllers и выбросьте те, которые вам не нужны?
Ответ №1:
Теперь я решил проблему к своему удовлетворению.
Я поместил следующий код в свой метод initWithNibName:
self.navigationItem.hidesBackButton = YES;
Это скрыло кнопку «Назад», и мне не пришлось ничего открывать, но я думаю, что по соображениям памяти было бы полезно сохранить идею удаления ненужных элементов из стека.
Но на данный момент сойдет и вышеупомянутое.
Комментарии:
1. Я сделал другое решение, в котором я поместил весь материал «new game init» внутри модального представления с его собственной uinavigation. Способ модального просмотра работает так же хорошо, и можно утверждать, что он более логичен. Единственная проблема заключается в том, когда вы удаляете модальный режим и помещаете представление главного меню в стек. Сказав это, кажется, что работает любой способ.
Ответ №2:
Если вы хотите сбросить историю UINavigation, повторно инициализируйте навигационный контроллер.
если вы используете UINavigationController из класса AppDelegate. Вы можете повторно инициализировать историю навигации.
AppDelegate.NavigationController=[[Выделение UINavigationController]инициализация];
Приведенный выше код сбросит историю NavigationController..