Подтвердить что ты не робот

Как удалить определенный контроллер просмотра из стека yinavigationcontroller?

У меня есть uinavigationcontroller. После входа в систему я хочу удалить контроллеры просмотра, такие как RegisterViewController, LoginViewController и т.д. Из стека UInavigationcontroller.

Я имею в виду, что мне нужно удалить определенный контроллер представления из стека? Как это возможно.

Я проверил это сообщение

http://starterstep.wordpress.com/2009/03/05/changing-a-uinavigationcontrollers-root-view-controller/

Итак, мы можем взять его в массив вроде

NSArray *allviewcontrollers= [(UINavigationController *)navigationController viewControllers];

Но как сделать дальнейший процесс. Этот вопрос охотится на меня надолго. Пожалуйста, ответьте мне. Спасибо заранее.

4b9b3361

Ответ 1

NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: navigationController.viewControllers];
[allViewControllers removeObjectIdenticalTo: removedViewController];
navigationController.viewControllers = allViewControllers;

Ответ 2

Вот мое решение. Вы можете установить тег или фиксированное свойство для своих контроллеров view, тогда вы можете пройти через стеки uinavigationcontroller для поиска в целевом контроллере (vcToRemove) и удалить его. Это может быть безопаснее. Код:

NSInteger tag = vcToRemove.wvTag;
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: vcToRemove.navigationController.viewControllers];
        int i = 1;
        for (i = 1; i <=[allViewControllers count]; i++) {
            UIViewController *vc = [allViewControllers objectAtIndex:i];
            if ([vc isKindOfClass:[MyWebViewController class]]) {
                if (((MyWebViewController *)vc).wvTag == tag) {
                    [allViewControllers removeObjectAtIndex:i];
                    break;
                }
            }
        }

        vcToRemove.navigationController.viewControllers = allViewControllers;