使用iOS 5上的Segues / Storyboardpopup当前视图
我正在使用iOS 5 SDK创build应用程序。 我设法使用Storyboard的Segues来推送视图,但我找不到正确的方式来popup当前视图并返回到前一个视图。
我没有使用任何导航控制器(应用程序没有任何顶部或底部酒吧)。
我不认为使用模式或推继续其他方式将是解决scheme,因为它实例化一个新的控制器。
我是否必须使用与之相反的animation并在最后删除视图的自定义Segue? 或者,还有更好的方法 ?
你可以尝试调用[self dismissViewControllerAnimated:YES completion:nil];
从要控制的控制器(无论控制器是否被按下或模态显示)。
这里是相关的文档: UIViewController类的参考
呈现视图控制器负责解除其呈现的视图控制器。 如果您在呈现的视图控制器本身上调用此方法,它会自动将消息转发给呈现视图控制器。
iOS 5中的故事板不提供“无代码”的方式从segue返回 – 这是你需要实现自己的东西。
如果您使用“push”segues(需要导航控制器),请使用导航控制器的popViewControllerAnimated:
方法来撤消上一次推送segue。 (或其他方法撤消更多;请参阅UINavigationController
文档。)
如果你使用“modal”segues,在视图控制器上调用dismissViewControllerAnimated:completion:
显示当前的视图控制器(你可以从它的presentingViewController
属性中获得)。
更新:在iOS 6及更高版本中,有一个放松的过程,可以在故事板中“返回”。 这仍然不是一个无代码的解决scheme – 不应该是这样,因为你需要能够做一些事情,比如区分“完成”和“取消”从模态视图控制器退出。 但它确实可以让您将更多的应用程序的语义stream程放入故事板。 苹果公司有一个技术说明,详细描述它们, WWDC 2012 Session 407的video也包含了这些技术说明 。
只是为了澄清。
在被推动的类中。 只需连线以下和控制器和视图将被popup。
[self.navigationController popViewControllerAnimated:YES];
在你的滑雪板上创buildSeguetypes“自定义”。 这可以从一个button。 创build一个名为“popSegue”的新UIStoryboardSegue类在popSegue.m文件中添加以下内容;
-(void)perform{ UIViewController *sourceViewContreoller = [self sourceViewController]; [sourceViewContreoller.navigationController popViewControllerAnimated:YES]; }
– 在故事板编辑器中。
– selectsegue并将Segue类更改为“popSegue”
– 设置标识符“popSegue”
完成!
您可以在整个项目中使用相同的“popSegue”类。
希望这可以帮助
我也使用Xcode 5,这是如何完成的。 首先,在推送另一个的视图代码文件中,在.h文件中创build一个IBAction方法,例如:
- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender; Then in the .m file add this: - (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender { }
你可以在这个方法中添加你想执行的清理代码。 接下来转到故事板并select推送的视图。 我假设你在视图上有一些button,用户可以点击表示他已经完成了。 点击该button,按住键并拖动到出口下方的绿色框中。 松开鼠标键,但继续按住键。 popup窗口会出现,你的方法将显示在列表中。 select该方法。 现在,当用户点击button时,视图将popup,您将返回到开始方法。