popViewController iphone

问题描述:

我可以移除出导航控制器堆的视图控制器不使用这样的popViewController iphone

[mynavigationController popViewControllerAnimated:YES]; 

任何帮助将受到赞赏的码。

+0

如果你想避免动画,你不能只是'[mynavigationController popViewControllerAnimated:NO];'? – 2011-12-26 11:06:01

+0

感谢您的帮助,但我想要的是我刚才所说的,删除没有弹出。 – 2011-12-26 11:55:22

@ rishi几乎有它。你需要一个可变数组从UINavigationController docs

@属性(非原子,副本)的NSArray * viewControllers

做编辑

NSMutableArray *activeControllerArray = 
    [self.navigationController.viewControllers mutableCopy]; 

[activeControllerArray removeObjectAtIndex:indexToRemove]; 
// If you still have a handle to the viewcontroller you could use other methods like removeObject: 

self.navigationController.viewControllers = activeControllerArray; 

摘录...分配视图控制器的一个新的数组这个属性相当于将动画参数设置为NO来调用setViewControllers:animated:方法。

+0

它的工作原理,谢谢! – 2011-12-26 14:32:21

+0

谢谢保罗......它只是从我脑海中跳过.... – rishi 2011-12-26 14:38:56

我不知道从导航控制器的视图控制器删除视图控制器,但如果你想跳过特定视图的时候回去,然后用这一个

-(void)goToMainCategoryView 
{ 
    id object = nil; 

    for (UIViewController *viewControl in self.navigationController.viewControllers) 
    { 
     if(viewControl.view.tag == 0) 
     { 
      object = viewControl; 
     } 
    } 
    [self.navigationController popToViewController:object animated:YES]; 
} 
+0

实际上,是的,我想在按下时跳过一个特定的视图,但这种方法并没有多大帮助,因为我认为它需要重新设置返回按钮。 – 2011-12-26 11:57:44

尝试你可以做以下事项

编辑 -

NSMutableArray *activeControllerArray = [self.navigationController.viewControllers mutableCopy]; 
[activeControllerArray removeObjectAtIndex:1]; 

self.navigationController.viewControllers = activeControllerArray; 

对于删除也是可以让你自定义的逻辑,如复用isKindOfClass方法,特定的控制器,然后删除该Ø r任何你想要的东西

+0

你没有得到'NSMutableArray'。该属性被定义为'@property(nonatomic,copy)NSArray * viewControllers' – 2011-12-26 14:14:07

+0

我想这个,但我不知道为什么它崩溃在这条线 '[activeControllerArray removeObjectAtIndex:1];' – 2011-12-26 14:27:58

+0

感谢您的帮助,我认为你的代码只需要“Paul.s”提到的修改。 – 2011-12-26 14:35:31