Iphone 在没有导航控制器的情况下返回2个视图

Iphone 在没有导航控制器的情况下返回2个视图,iphone,xcode,Iphone,Xcode,如何在不使用导航控制器的情况下返回2或3个视图?在我的应用程序中,有一个主菜单视图。我想从所有其他页面(从多个视图)访问该菜单。如何实现这一点?具有 [自我解除ModalViewController激活:是]

如何在不使用导航控制器的情况下返回2或3个视图?在我的应用程序中,有一个主菜单视图。我想从所有其他页面(从多个视图)访问该菜单。如何实现这一点?具有
[自我解除ModalViewController激活:是] 您想返回“两个或三个视图”?使用
从SuperView中移除
?或者您是在谈论视图控制器吗

你在用故事板吗

如果是,请执行以下操作:

- (void)showModalAssistantViewController
{

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"AssistantStoryboard" bundle:nil];
AssistantRootViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"AssistantNavigationController"];
[viewController setModalPresentationStyle:UIModalPresentationFullScreen];
[viewController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self.navigationController presentModalViewController:viewController animated:YES];
//... or pushToViewController ... whatever, you get the point.
}
您想返回“两个或三个视图”吗?使用
从SuperView中移除
?或者您是在谈论视图控制器吗

你在用故事板吗

如果是,请执行以下操作:

- (void)showModalAssistantViewController
{

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"AssistantStoryboard" bundle:nil];
AssistantRootViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"AssistantNavigationController"];
[viewController setModalPresentationStyle:UIModalPresentationFullScreen];
[viewController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self.navigationController presentModalViewController:viewController animated:YES];
//... or pushToViewController ... whatever, you get the point.
}
我找到了解决办法

当然,您可以在最明显的地方找到解决方案,因此从UIViewController参考中读取DismissModalViewController激活方法

如果连续显示多个模态视图控制器,从而构建模态视图控制器堆栈,则在堆栈中较低的视图控制器上调用此方法将取消其直接子视图控制器和堆栈中该子视图控制器上方的所有视图控制器。当这种情况发生时,只有最上面的视图以动画方式被取消;只需从堆栈中删除任何中间视图控制器。最上面的视图使用其模式转换样式关闭,该样式可能与堆栈中较低的其他视图控制器使用的样式不同

因此,在目标视图上调用dismissModalViewControllerAnimated就足够了。我使用了以下代码:

[[[[[self parentViewController] parentViewController] parentViewController] parentViewController] dismissModalViewControllerAnimated:YES];
回到我的家

抄袭自

我找到了解决方案

当然,您可以在最明显的地方找到解决方案,因此从UIViewController参考中读取DismissModalViewController激活方法

如果连续显示多个模态视图控制器,从而构建模态视图控制器堆栈,则在堆栈中较低的视图控制器上调用此方法将取消其直接子视图控制器和堆栈中该子视图控制器上方的所有视图控制器。当这种情况发生时,只有最上面的视图以动画方式被取消;只需从堆栈中删除任何中间视图控制器。最上面的视图使用其模式转换样式关闭,该样式可能与堆栈中较低的其他视图控制器使用的样式不同

因此,在目标视图上调用dismissModalViewControllerAnimated就足够了。我使用了以下代码:

[[[[[self parentViewController] parentViewController] parentViewController] parentViewController] dismissModalViewControllerAnimated:YES];
回到我的家

复制自

“不使用导航控制器返回2个视图”

嗯,我不确定这是否忽略了要点,但最简单的方法是使用导航控制器中的PoptorootViewController激活的

[self.navigationController popToRootViewControllerAnimated:TRUE];
因此,假设您在导航控制器中有一系列三个屏幕,在第三个屏幕上,您希望“后退”按钮将您带回初始屏幕

在第三个屏幕上,您将添加以下代码:

-(void)viewDidLoad
{
    [super viewDidLoad];

    // change the back button and add an event handler
    self.navigationItem.leftBarButtonItem =
    [[UIBarButtonItem alloc] initWithTitle:@"Back"
                                     style:UIBarButtonItemStyleBordered
                                    target:self
                                    action:@selector(handleBack:)];
}


-(void)handleBack:(id)sender
{
    NSLog(@"About to go back to the first screen..");
    [self.navigationController popToRootViewControllerAnimated:TRUE];
}
“在没有导航控制器的情况下返回2个视图”

嗯,我不确定这是否忽略了要点,但最简单的方法是使用导航控制器中的PoptorootViewController激活的

[self.navigationController popToRootViewControllerAnimated:TRUE];
因此,假设您在导航控制器中有一系列三个屏幕,在第三个屏幕上,您希望“后退”按钮将您带回初始屏幕

在第三个屏幕上,您将添加以下代码:

-(void)viewDidLoad
{
    [super viewDidLoad];

    // change the back button and add an event handler
    self.navigationItem.leftBarButtonItem =
    [[UIBarButtonItem alloc] initWithTitle:@"Back"
                                     style:UIBarButtonItemStyleBordered
                                    target:self
                                    action:@selector(handleBack:)];
}


-(void)handleBack:(id)sender
{
    NSLog(@"About to go back to the first screen..");
    [self.navigationController popToRootViewControllerAnimated:TRUE];
}

不使用故事板之类的东西。使用简单视图时,只能通过[self-presentModalViewController:firstview动画:是];想要回到2和3视图,而不是使用故事板或其他东西。使用简单视图时,只能通过[self-presentModalViewController:firstview动画:是];想要返回2和3视图您可以将问题标记为重复并在评论部分提供链接。您可以将问题标记为重复并在评论部分提供链接。