0

я установил навигационный контроллер следующим образом:IOS: управлять viewcontrollers внутри навигационного контроллера

UINavigationController *navController = (UINavigationController*) [self.storyboard instantiateViewControllerWithIdentifier:@"navigationcontroller"]; 
     NSArray *viewCS = [[NSArray alloc]initWithObjects:firstViewController, secondCureViewController, thirdUpViewController,fourthViewController, nil]; 
     [navController setViewControllers:viewCS]; 
[self presentViewController:navController animated:YES completion:nil]; 

Таким образом, когда я открываю свой навигационный контроллер, он появится в fourt ViewController и его хорошо, но каковы инструкции для навигации внутри моего навигационного контроллера?

Пример: Я на четвертом месте, и я хочу пойти первым, после того, как я хочу пойти вторым и после того, как я хочу пойти еще раз в четыре.

Естественно, я не хочу потерять текущие состояния моих контроллеров view, вы можете мне помочь?

+0

Не могли бы вы опубликовать снимок экрана, что у вас есть? – Pull

ответ

0

Использование ниже методов для перемещения между навигацией controller.s

– pushViewController - add new view controller in hierarchy. 
– popViewControllerAnimated - From 4th to 3rd view controller. 
– popToRootViewControllerAnimated: - from 4th to 1st view controller. 

EDIT: NSArray * viewCS -> заявить об этом в качестве переменной-члена или свойство App делегата. Затем вы можете получить доступ к массиву из делегата, как показано ниже, когда вы хотите нажать или поместить представление. Таким образом, все контроллеры останутся в вашем массиве и могут быть добавлены/удалены по мере необходимости.

AppDelegate *del = [[UIApplication sharedApplication] delegate]; 
+0

Да, но когда я использую pop my navController.viewControllers в nslog, уменьшает viewcontroller, и есть три контроллера view, а не четыре. – CrazyDev

+0

Я пробовал, и у меня произошел сбой, который говорит: «Попробовал поп-контроль контроллера, который не существует . '" – CrazyDev

+0

можете ли вы обновить свой вопрос кодом, который вы поставили как часть делегата приложения, а затем, когда вы пытаетесь открыть представление? Объект освобождается. Посмотрев на код, я смогу помочь .. – Jailbroken

0

Вы можете изменить порядок отображения контрольных массивов navController.

NSArray *VCArray = [navController viewControllers]; 
//manipulate VCArray and change the order of its items 
... 
//set it as new viewControllers array 
[navController setViewControllers:VCArray animated:YES]; 

Таким образом, контроллеры просмотра в стеке навигации сохраняют свои состояния, и ни один из них не освобождается.

0

я ниже код ...

// Get controllers     
NSArray *viewControllers = [self.navigationController viewControllers]; 

int viewIndex = 2; 
[self.navigationController popToViewController:[viewControllers objectAtIndex:viewIndex] animated:NO]; 
+0

Я заметил, что когда я использую pop viewcontrollers, начинаются три, а не четыре – CrazyDev

+0

, если вы хотите перейти с первого взгляда с 4-го, тогда установите viewIndex как 1, viewIndex = 1 – Sabareesh

Смежные вопросы