插入ViewController在self.navigationController.viewcontroller的堆栈之间

时间:2014-11-10 13:20:41

标签: ios iphone uinavigationcontroller

我的导航控制器中有三个viewcontollers。现在我想要做的只是在self.navigationController.viewControllers数组之间插入一个视图控制器。

当我检查属性viewControllers不是readonly属性所以我想我们也可以设置它。 这就是为什么我使用下面的代码在堆栈之间插入我的ViewController。 但不幸的是,它并没有修改 self.navigationController.viewControllers的堆栈。

那么如何插入和修改堆栈呢?另外请确保我不想pushViewcontroller。

    CXSTransactionSelectionViewController *trxSelectionVc = [self.storyboard instantiateViewControllerWithIdentifier:@"CXSTransactionSelectionViewController"];
    NSMutableArray *viewControllers = [self.navigationController.viewControllers mutableCopy];
    [viewControllers insertObject:trxSelectionVc atIndex:viewControllers.count-2 ];
    [self.navigationController setViewControllers:viewControllers animated:YES];
    NSLog(@"%@",self.navigationController.viewControllers);

2 个答案:

答案 0 :(得分:1)

尝试做这样的事情:

NSArray * oldViewControllers = [self.navigationController viewControllers];
NSArray * newViewControllers = [NSArray arrayWithObjects:[oldViewControllers objectAtIndex:0], newVC, [oldViewControllers objectAtIndex:1],nil];
[self.navigationController setViewControllers:newViewControllers];

答案 1 :(得分:0)

使用此问题已解决

CXSTransactionSelectionViewController *trxSelectionVc = [self.storyboard instantiateViewControllerWithIdentifier:@"CXSTransactionSelectionViewController"];
[self.navigationController.viewControllers insertObject:trxSelectionVc atIndex:1 ];
NSLog(@"%@",self.navigationController.viewControllers);