2012-02-14 3 views
1

У меня есть приложение, состоящее из TabBarController и Navigation Controller. У меня есть две вкладки как tabA и tabB. Вкладка selecetd по умолчанию - 1 (tabB) с контроллером представления L (когда приложение завершает запуск). Теперь пользователь может перемещаться как: L => M => N => O. Просмотр контроллера для tabA x.user может перемещаться как: x => y => z. есть кнопка на верхней части контроллера вида г, который должен перемещаться/PUSH/POP потребителя к корневому элементу представления контроллера Tabb с видом на контроллере L.введите представление корня (по умолчанию) второй вкладки из контроллера просмотра любой другой вкладки

Любых sugestions, благодаря

ответ

7

Это не должно быть если я правильно понимаю ваш вопрос.

Метод должен выглядеть следующим образом:

- (void) pop 
{ 
    UIViewController * target = [[self.tabBarController viewControllers] objectAtIndex:1]; 

    [target.navigationController popToRootViewControllerAnimated: NO]; 

    [self.tabBarController setSelectedIndex:1]; 
} 
+0

+1: Используйте этот ответ ... вы были на несколько секунд быстрее, чем меня :) – Jhaliya

+0

Uuuhh Ненавижу, когда это произойдет. Извините :) –

+0

спасибо, я смог попкорн к корневому контроллеру представления, но он всегда появляется до последнего элемента навигации в контроллере вида tabB.Means, если пользователь перемещается из: L => M => N => O в tabB теперь оставляет tabB гдеVer это (либо L/M/N/o). Теперь из tabA, если я пытаюсь ПОПИРОВАТЬ Контроллер корневого представления tabB, он появляется до того места, где он покинул навигацию в tabB (либо L/M/N /O).i хотите перевести его на L только с выбранной вкладкой 1 (выбранная вкладка работает нормально). – Alok

1

Вы должны совать в корень текущего TabBar затем использовать метод контроллера TabBar для выбора кнопки панели вкладок с помощью setSelectedIndex метод ..

+0

спасибо, что указали меня в нужном направлении – Alok

1

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

[self.navigationController popToRootViewControllerAnimated:NO]; 

В viewWillDisappear этих VCs. Кажется прямым и легким. У меня отсутствует причина, почему я не хочу этого делать? Как и исходный вопросник, я всегда хочу начать с корневого VC моей вкладки независимо от того, где пользователь остановился в последний раз, когда они были на этой вкладке.

Быстрое обновление: я построил собственную версию контроллера разделенного вида и добавил вышеприведенную строку в viewWillDisappear сделал некоторые нежелательные вещи на iPad, поэтому мне пришлось добавить условие для проверки типа устройства (что не было затронуто в любом случае из-за того, что оба контроллера представлений были частью splitVC, которые я построил), но в противном случае, похоже, делают то, что я хочу.

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