Перейти к первому ViewController в стеке навигации

В моем стеке навигации у меня есть 2 контроллера просмотра, которые были помещены в стек навигации. Кроме того, у меня есть PresentModalViewController в качестве rootviewcontroller, и я нажимаю на него еще 2 контроллера просмотра. Таким образом, стек навигации будет похож на

ViewController

ViewController

PresentModalViewController как rootviewcontroller

ViewController

ViewController

Из самого верхнего контроллера представления при нажатии кнопки я хотел бы перейти к самому нижнему контроллеру представления. Контроллеры представления между ними должны быть удалены или удалены. Как это возможно. Я пробовал dismissModalViewControllerAnimated: и popToRootViewControllerAnimated: безуспешно.


person Jean Paul Scott    schedule 12.06.2012    source источник
comment
Значит, вы хотите перескочить с 5-го контроллера на первый, верно?   -  person Dipen Chudasama    schedule 12.06.2012


Ответы (3)


Попробуй, это сработает

            NSArray *vcs = [self.navigationController viewControllers];
            [self.navigationController popToViewController:[vcs objectAtIndex:[vcs count]-2] animated:YES];
person Dipen Chudasama    schedule 12.06.2012
comment
Когда я регистрирую массив навигации, я вижу только 3 контроллера просмотра, поскольку я установил Presentmodalviewcontroller (viewController3) в качестве своего rootviewcontroller. - person Jean Paul Scott; 12.06.2012
comment
вам нужно изменить [vcs count] -2 или 3 или 4, как хотите. - person Dipen Chudasama; 12.06.2012
comment
Если в массиве навигации всего 3 элемента, как можно перейти к 4-му контроллеру представления? - person Jean Paul Scott; 12.06.2012
comment
йен, что также я говорю, что вам нужно установить значение в соответствии с вашими требованиями. - person Dipen Chudasama; 12.06.2012
comment
Я думаю, вы не понимаете мой вопрос. Мой Presentmodalviewcontroller установлен как rootviewcontroller, из-за чего первые 2 контроллера просмотра в нижней части стека отсутствуют в стеке навигации. - person Jean Paul Scott; 12.06.2012

Вам необходимо popToRootViewControllerAnimated использовать navigationController вашего ModalViewController. Тогда вы должны использовать dismissModalViewControllerAnimated. Затем снова нужно сделать popToRootViewControllerAnimated.

person san    schedule 12.06.2012

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

Class A.h
@protocol MyDelegateClass
- (void)didLoadHomeView; 


Class B.h
@interface MyViewController : UIViewController<MyHomeViewDelegate>

Class B.m
- (void)didLoadHomeView
{
    [self.navigationController popToRootViewControllerAnimated:YES];
}

Class C.h
@interface MyCurrentViewController : UIViewController
{
    id <MyLoadHomeDelegate> homeDelegate; 
}
    @property (nonatomic,assign) id <MyLoadHomeDelegate>   homeDelegate;

Class C.m
-(IBAction) OnHome:(id)sender{
    [self dismissModalViewControllerAnimated:NO];
    if (self.homeDelegate) {
        [homeDelegate didLoadHomeView];
    }

}

ModalViewController, который является текущим RootViewController, отклоняется в OnHome:(id)sender методе класса MyCurrentVIewController. Отключив ModalViewController, я перешел к текущему контроллеру rootview в стеке навигации, который является домашним представлением (firstViewController). Приведенный выше код отлично работает в моем случае.

person Jean Paul Scott    schedule 17.06.2012