2

我正在使用带有导航控制器的故事板,该控制器具有三个视图控制器、根控制器和另外两个分别标记为 1 2 和 3 的控制器。如图所示在此处输入图像描述

现在的问题是我想使用单个 unWind Segue 从第三个视图控制器返回到 rootViewController 和第二个视图控制器。我的意思是,如果我从 root 推动第三个控制器而不是展开让我回到根控制器,如果我从第二个推动而不是它让我回到第二个 viewController。我想只使用一个按钮返回。任何帮助将不胜感激 。谢谢

4

1 回答 1

1

您需要指定一个 IBAction 并将该操作附加到您要按下的按钮以向后移动到任何先前的视图控制器。在此操作方法中,您可以指定要展开到哪个控制器。

现在,根据图像,您想从第 3 个控制器放松到第 2 个控制器。因此,在您的第三个控制器中,将以下操作方法附加到按钮。此外,转到情节提要并为每个视图控制器提供情节提要标识符。假设,您的第二个视图控制器的故事板标识符是“secondViewController”。

-(IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue
    {

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    SecondViewController *secondVC = [storyboard instantiateViewControllerWithIdentifier:@"secondViewController"];
    int index = [self getMyDesiredViewControllerIndex:secondVC];
    [self.navigationController popToViewController:[[self.navigationController viewControllers]objectAtIndex:index] animated:YES];
    }

你的getMyDesiredViewControllerIndex 方法应该看起来像 -

-(int)getMyDesiredViewControllerIndex:(UIViewController*)desiredVC{

    int i=0;
    for(UIViewController *vc in [self.navigationController viewControllers]){
        if([vc isKindOfClass:[desiredVC class]]){
            return i;
        }
        i++;
    }
    return 0;
}

这样,你可以跳转到任何你想要的 View Controller。只需指定所需的视图控制器并从 getMyDesiredViewControllerIndex 获取其索引并弹出到该控制器。

希望这可以帮助!

于 2015-07-10T11:54:40.170 回答