Как вернуться 2 просмотра назад в приложение на основе навигации - PullRequest
2 голосов
/ 19 января 2012

Я создал приложение на основе View из 4 представлений.С помощью контроллера навигации я меняю вид.В моем третьем представлении есть одна кнопка.Если я нажму на эту кнопку, приложение должно перейти к первому виду (2 просмотра назад).

Я использовал

[self.navigationController popViewControllerAnimated:YES]; 
[self.navigationController popViewControllerAnimated:YES];  

Это не работаетИдет только на предыдущую страницу.

Ответы [ 5 ]

12 голосов
/ 28 июля 2014
for (UIViewController *controller in self.navigationController.viewControllers)
{
    if ([controller isKindOfClass:[NeededViewController class]])
    {
        [self.navigationController popToViewController:controller
                                              animated:YES];
        break;
    }
}
4 голосов
/ 19 января 2012

Попробуйте и внесите изменения в соответствии с вашей спецификацией

-(void)goToMainCategoryView;
{
id object = nil;

for (UIViewController *viewControl in self.navigationController.viewControllers)
{
    if(viewControl.view.tag == 0)
    {
        object = viewControl;
    }
}
[self.navigationController popToViewController:object animated:YES];
}
4 голосов
/ 06 декабря 2012

Другой простой корень для выбора UIViewController по индексу будет использовать:

NSArray *viewsArray = [self.navigationController viewControllers];
UIViewController *chosenView = [viewsArray objectAtIndex:1];
[self.navigationController popToViewController:chosenView animated:YES];

chosenView будет вторым видом в стеке навигации (позиция 1). Если у вас большой стек и вы хотите перейти к конкретному представлению.

3 голосов
/ 19 января 2012

Используйте

popToRootViewControllerAnimated:

, чтобы вернуться обратно к контроллеру вида сверху:

Документация:

Извлекает все контроллеры представления в стеке, кроме корневогопросмотреть контроллер и обновить дисплей.

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated

или

popToViewController:animated:

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

Документация:

Выводит контроллеры представления, пока указанный контроллер представления не окажется на вершине стека навигации.

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated

Параметры

viewController Контроллер представления, который вы хотитебыть на вершине стека.

0 голосов
/ 22 сентября 2015

То же самое в swift 1.2 :: xcode: 6.4

for controller: UIViewController in self.navigationController?.viewControllers as! [UIViewController] {
        if controller.isKindOfClass(YourViewController) {
            self.navigationController!.popToViewController(controller, animated: true)
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...