如何在不使用导航控制器的情况下返回2或3个视图?这是在我的应用程序中,有一个主菜单视图。我想从所有其他页面(从多个视图)到达该菜单。如何实施?同
我认为这不能实现[self dismissModalViewControllerAnimated:YES];
。
有人请帮帮我..
答案 0 :(得分:2)
我找到了解决方案。
当然你可以在最明显的地方找到解决方案,所以从UIViewController参考中读取dismissModalViewControllerAnimated方法......
如果连续呈现多个模态视图控制器,从而构建一组模态视图控制器,则在堆栈下方的视图控制器上调用此方法会解除其直接子视图控制器以及堆栈上该子视图上方的所有视图控制器。发生这种情况时,只有最顶层的视图以动画方式被删除;任何中间视图控制器都可以从堆栈中删除。最顶层的视图使用其模态过渡样式被忽略,这可能与堆栈中较低的其他视图控制器使用的样式不同。
所以在目标视图上调用dismissModalViewControllerAnimated就足够了。我使用了以下代码:
[[[[[self parentViewController] parentViewController] parentViewController] parentViewController] dismissModalViewControllerAnimated:YES];
回到我家。
从here
复制答案 1 :(得分:2)
“在没有导航控制器的情况下返回 2 ”
嗯,我不确定这是否会遗漏这一点,但最简单的方法是使用导航控制器中的 popToRootViewControllerAnimated :
[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 :(得分:0)
你想要“两三个 VIEWS 返回”吗?使用removeFromSuperview
?或者您在谈论 ViewControllers ?
您使用的是Storyboard吗?
如果是的话:
- (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.
}
答案 3 :(得分:0)
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];