2012-04-23 2 views
2

У меня есть следующие расположение контроллеров отображения:Как вернуться к первому viewController в сложном сценарии?

loginViewController -> tabBarViewController -> navigationViewController -> mainTableViewController -> logoutViewController. 
              \ 
              --> navigationViewController -> secondaryTableViewController             

Если пользователь успешно входит в он идет к первой вкладке tabBarViewController, которая сама по себе является первым ViewController (mainTableViewController) от navigationViewController. Подумайте, что этот mainTableViewController показывает несколько параметров, каждый из которых ведет к собственному viewController, являясь logoutViewController одним из вариантов.

В logoutView у меня есть кнопка выхода из системы (cool uh?), И если выход завершен, я хочу вернуться к loginViewController.

Я попытался назвать:

[self.navigationController popToRootViewControllerAnimated:NO]; 

из logoutViewController, но ничего не происходит. Я искал другие подобные вопросы, но большинство из них предлагает использовать popToRootViewControllerAnimated. Я не думаю, что это так просто, так как у меня есть навигационный контроллер, который выталкивается из tabBarController, нажатого из viewController. Каков наилучший способ сделать это?

Надеюсь, это не слишком смущает. Благодарю.

+0

Возможно, я мог хранить loginViewController в свойстве tabBarController и использовать [self popToViewController: tabBarController.loginViewController]? – JSeven

ответ

0

Я предполагаю, что путь хранится в некотором режиме LiFo; почему бы вам просто не попнуть до счета = 1?

+0

Вы имеете в виду вызов popViewController и подсчет возвращаемого массива в цикле или что-то еще? – JSeven

+0

У меня нет конкретного примера, более общая ссылка на программирование. если вы сохранили свой путь в стеке и выполните: нажмите loginViewController, нажмите tabBarViewController, нажмите навигационный контроллер навигации. Если вы проверите счет стека, он перечислит 3. Итак, var ThisWillBeTheLoginController; while (Stack.Count> 0) ThisWillbeTheLoginController = Stack.Pop(); это должно оставить вас с помощью loginViewController. Не уверен, как это перевести на ObjectiveC, но этот шаблон должен программироваться в основном на любом языке. Пример: http://stackoverflow.com/questions/7567827/last-in-first-out-stack-with-gcd – NKCSS

Смежные вопросы