popTOViewController

Объединив ответы Петра и Сарфраза, я пришел к следующему.

На странице1.html:

<a href="page2.html#elementID">Jump</a>

На странице2.html:

<script type="text/javascript">
    $(document).ready(function() {
        $('html, body').hide();

        if (window.location.hash) {
            setTimeout(function() {
                $('html, body').scrollTop(0).show();
                $('html, body').animate({
                    scrollTop: $(window.location.hash).offset().top
                    }, 1000)
            }, 0);
        }
        else {
            $('html, body').show();
        }
    });
</script>
29
задан Neil Masson 29 January 2016 в 19:31
поделиться

4 ответа

Попробуйте это.

Там, где я написал SeeMyScoresViewController, вы должны написать свой класс View Controller, в который вам нужно перейти (например, Class of Home)

NSArray *viewControllers = [[self navigationController] viewControllers];
for( int i=0;i<[viewControllers count];i++){
    id obj=[viewControllers objectAtIndex:i];
    if([obj isKindOfClass:[SeeMyScoresViewController class]]){
        [[self navigationController] popToViewController:obj animated:YES];
        return;
    }
}
85
ответ дан galuszkak 29 January 2016 в 19:31
поделиться

Если вы хотите перейти к корневому контроллеру просмотра (стр. 1), просто используйте:

    [self.navigationController popToRootViewControllerAnimated:YES];

Также первым элементом в индексе является не элемент 1, а элемент 0:

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];

Это должно вернуть вас к первому viewController, но им будет проще использовать метод popToRootViewController.

20
ответ дан rckoenes 29 January 2016 в 19:31
поделиться

Современный способ возврата к определенному контроллеру:

[self.navigationController.viewControllers enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

    if ([obj isKindOfClass:[MyViewController class]]) {
        [self.navigationController popToViewController:obj animated:YES];
        *stop = YES;
    }
}];

MyViewController - это контроллер, к которому вы хотите вернуться.

1
ответ дан isair 29 January 2016 в 19:31
поделиться

Часто более важно сделать это с вершины стека, поэтому:

В подклассе или категории UINavigationController:

- (void)popToLast:(Class)aClass
{
    for (int i=self.viewControllers.count-1; i>=0; i--)
    {
        UIViewController *vc = self.viewControllers[i];
        if ([vc isKindOfClass:aClass])
        {
            [self popToViewController:vc animated:YES];
            break;
        }
    }
}

, и вы называете это

popToLast:[SomeViewController class];
3
ответ дан Leszek Zarna 29 January 2016 в 19:31
поделиться