popViewController iphone

时间:2011-12-26 11:00:21

标签: iphone objective-c ios uinavigationcontroller

我是否可以在不使用类似

的代码的情况下从导航控制器堆栈中删除视图控制器
[mynavigationController popViewControllerAnimated:YES];

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

我不知道要从导航控制器的视图控制器中删除视图控制器,但如果您想在返回时跳过特定视图,请尝试使用此视图

-(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];
}

答案 1 :(得分:1)

@rishi几乎拥有它。你需要一个可变数组来进行编辑

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;

来自UINavigationController docs

的摘录
  

@property(非原子,复制)NSArray * viewControllers

     

...为此属性分配新的视图控制器数组等效于调用setViewControllers:animated:方法,并将动画参数设置为NO。

答案 2 :(得分:0)

您可以执行以下操作 -

编辑 -

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

self.navigationController.viewControllers = activeControllerArray;

同样对于删除,您可以制作自定义逻辑,例如使用isKindOfClass方法检查特定控制器,然后删除您想要的那个或任何