如何在视图控制器之间切换
Posted
技术标签:
【中文标题】如何在视图控制器之间切换【英文标题】:How to Switch Between View Controllers 【发布时间】:2014-02-17 21:13:48 【问题描述】:所以,现在,在我的 Main.storyboard 中,我有一个视图控制器,我们称之为“S B 视图控制器”。我添加了另一个视图控制器,称为“视图控制器”。我该如何做到这一点,以便当用户按下按钮时,它将从 S B 视图控制器转到视图控制器?或者,这不是我应该做的事情吗?
抱歉,如果您不明白这一点;如果你不知道就告诉我
提前致谢。
【问题讨论】:
已有大量 Stack Overflow 问题、在线教程和其他资源可用于此问题。请在对 Stack Overflow 提出新问题之前进行彻底的研究。不过这里有一个提示:你需要 Storyboard segues。 请参考official documentation并彻底研究。这是以前多次问过的问题。 【参考方案1】:我通常会这样做。
在 ViewController 中设置一个 Button,然后按住 Control-Drag,它会创建一个蓝色的灵活箭头并将其拖放到我想要在单击时打开的视图上。
然后会出现一个小的弹出菜单并选择模态。
然后我将在另一个视图中创建另一个按钮,在该按钮中将返回原始视图。例如,“完成”会在之后关闭视图。
这里是 Dismiss 的代码:
- (IBAction)done:(id)sender
[self dismissViewControllerAnimated:YES completion:nil];
这将关闭视图,顺便说一下,第二个视图。
这是你需要的吗?
【讨论】:
【参考方案2】:有很多可用于故事板转场的教程, 检查以下简单教程, appcoda tutorial, raywenderlich tutorial
【讨论】:
【参考方案3】:假设你有一个 SwitchViewController,然后是另外两个视图,让我们分别调用那些 BlueViewController 和 YellowViewController。
然后,您可以在按下按钮时使用以下操作: - (IBAction)switchViews [UIView beginAnimations:@"View Flip" context:NULL]; [UIView setAnimationDuration:1.4]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
if(!self.yellowViewController.view.superview)
if(!self.yellowViewController)
self.yellowViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Yellow"];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:NO];
[self.blueViewController.view removeFromSuperview];
[self.view insertSubview:self.yellowViewController.view atIndex:0];
else
if(!self.blueViewController)
self.blueViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Blue"];
[UIView setAnimationDuration:0.2];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:1];
[self.yellowViewController.view removeFromSuperview];
[self.view insertSubview:self.blueViewController.view atIndex:0];
[UIView commitAnimations];
应该是不言自明的。如果有任何问题,我们来听听。
【讨论】:
以上是关于如何在视图控制器之间切换的主要内容,如果未能解决你的问题,请参考以下文章