popViewController iphone

popViewController iphone,iphone,objective-c,ios,uinavigationcontroller,Iphone,Objective C,Ios,Uinavigationcontroller,我可以在不使用类似代码的情况下从导航控制器堆栈中删除视图控制器吗 [mynavigationController popViewControllerAnimated:YES]; 任何帮助都将不胜感激。我不知道如何从导航控制器的视图控制器中删除视图控制器,但如果您想在返回时跳过特定视图,请尝试使用此视图 -(void)goToMainCategoryView { id object = nil; for (UIViewController *viewControl in sel

我可以在不使用类似代码的情况下从导航控制器堆栈中删除视图控制器吗

[mynavigationController popViewControllerAnimated:YES];

任何帮助都将不胜感激。

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

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

您可以执行以下操作-

编辑-


此外,对于删除,您可以创建自定义逻辑,例如使用isKindOfClass方法检查特定控制器,然后删除该控制器或您想要的任何东西。您需要一个可变数组来进行编辑

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;
摘自

@属性(非原子,复制)NSArray*视图控制器

。。。将视图控制器的新数组指定给此属性相当于调用SetViewController:animated:方法,并将动画参数设置为NO


如果您试图避免动画,难道您不能只执行
[mynavigationController popViewControllerAnimated:NO]?感谢您的帮助,但我想要的是我所说的准确无误的删除。事实上,是的,我想在按“后退”时跳过特定视图,但此方法没有多大帮助,因为我认为它需要覆盖“后退”按钮。您不会得到
NSMutableArray
后退。属性被定义为
@property(nonatomic,copy)NSArray*viewControllers
我正在尝试此操作,但我不知道它为什么会在这一行崩溃
[activeControllerArray removeObjectAtIndex:1]谢谢你的帮助,我认为你的代码只需要“Paul.s”提到的修改。
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;