Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在IOS中弹出堆栈?_Ios_Objective C_Uinavigationcontroller_Viewcontroller - Fatal编程技术网

如何在IOS中弹出堆栈?

如何在IOS中弹出堆栈?,ios,objective-c,uinavigationcontroller,viewcontroller,Ios,Objective C,Uinavigationcontroller,Viewcontroller,我正在构建一个iOS应用程序 我正在做的事情解释如下- 有3个名为A、B、C的视图控制器 我在按钮点击功能上转到A到B,然后转到C 我必须在所有三个ViewController(A、B、C)上实现导航控制器 现在,当我按下导航控制器的后退键时,后面的堆栈是C->B->A。这是默认行为 我需要的是堆栈操作应该像-C->A那样执行 为此,我必须从堆栈中弹出B。如何从堆栈中弹出B。如果您希望始终返回堆栈上的第一个视图控制器,则可以使用 [self.navigationController popToR

我正在构建一个iOS应用程序

我正在做的事情解释如下-

  • 有3个名为A、B、C的视图控制器
  • 我在按钮点击功能上转到A到B,然后转到C
  • 我必须在所有三个ViewController(A、B、C)上实现导航控制器
  • 现在,当我按下导航控制器的后退键时,后面的堆栈是C->B->A。这是默认行为
  • 我需要的是堆栈操作应该像-C->A那样执行


    为此,我必须从堆栈中弹出B。如何从堆栈中弹出B。

    如果您希望始终返回堆栈上的第一个视图控制器,则可以使用

    [self.navigationController popToRootViewControllerAnimated:YES];
    

    如果要弹出视图控制器的数量
    X
    ,请检查SO的回答:

    如果要始终返回堆栈上的第一个视图控制器,可以使用

    [self.navigationController popToRootViewControllerAnimated:YES];
    

    如果要弹出视图控制器的数量
    X
    ,请检查SO的回答:

    使用下面的代码执行此操作

    NSArray *viewContrlls=[[self navigationController] viewControllers];
    for( int i=0;i<[ viewContrlls count];i++){
      id obj=[viewContrlls objectAtIndex:i];
      if([obj isKindOfClass:[A class]]){
        // A is your class where to popback
        [[self navigationController] popToViewController:obj animated:YES];
        return;
        }
      }
    
    NSArray*viewcontlls=[[self-navigationController]viewControllers];
    
    对于(int i=0;i使用下面的代码执行此操作

    NSArray *viewContrlls=[[self navigationController] viewControllers];
    for( int i=0;i<[ viewContrlls count];i++){
      id obj=[viewContrlls objectAtIndex:i];
      if([obj isKindOfClass:[A class]]){
        // A is your class where to popback
        [[self navigationController] popToViewController:obj animated:YES];
        return;
        }
      }
    
    NSArray*viewcontlls=[[self-navigationController]viewControllers];
    
    对于(int i=0;iYou可以使用函数
    -(NSArray*)popToRootViewControllerAnimated:(BOOL)animated
    @hiteshmatnani[self.navigationController popToRootViewControllerAnimated:YES]只需写这一行即可。这将对您有所帮助。可能的副本可以使用“展开”segue来弹出多个视图的背面。请参阅答案您可以使用函数
    -(NSArray*)PoptorootViewController动画:(BOOL)动画
    @hiteshmatnani[self.navigationController PoptorootViewController动画:是的]只要写这行就行了。这会对你有帮助。可能重复的你可以使用unwind segue弹出多个视图的背面。查看答案