хотите использовать popViewControllerAnimated вместо popToRootViewControllerAnimated - PullRequest
0 голосов
/ 07 сентября 2010

Я хочу использовать popViewControllerAnimated вместо popToRootViewControllerAnimated для перехода к корневому представлению. Я не хочу переходить к корневому представлению напрямую. Так есть ли способ перейти к корневому представлению, выталкивая все предыдущие представления?

1 Ответ

3 голосов
/ 07 сентября 2010

Насколько я знаю, прямого метода для этого нет.

Конечно, вы можете создать нечто подобное из UINavigationControllerDelegate, который вызывает -[UINavigationController popViewControllerAnimated:], пока вы не достигли корня стека, но в зависимости от того, насколько глубоко ваш стек растет и как часто вы хотите Это может привести к очень нарушению, если это не раздражает ваших пользователей.
То есть они ничего не могут сделать, кроме как сидеть и смотреть, как пролетают виды, пока вы переключаете один NavigationController за другим ...

Edit:
Извините за поздний ответ!
Упомянутый протокол делегата определяет метод с именем - navigationController:didShowViewController:animated:. Если вы реализуете этот протокол в классе со свойством, скажем, shouldPopToRoot, вы можете установить для него значение YES в действии, когда вы запускаете всплывающее окно.
Тогда указанный метод может иметь вид

-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if ( self.shouldPopToRoot )
    {
        // Since this method gets called WHENEVER you pop a view-controller, you need
        // to ensure that you stop popping if you've just shown the root-view-controller
        if ( [navigationController.viewControllers itemAtIndex:0] == viewController )
            self.shouldPopToRoot = NO;
        else
            [navigationController popViewControllerAnimated:YES];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...