Jar*_*red 12 uiviewcontroller ios segue swift unwind-segue
我正在尝试编写一个刽子手游戏,并且在解开细分时遇到麻烦.我有多个视图控制器,最终导致相同的视图,用户在其中播放实际的刽子手.但是,根据呈现控制器,我希望游戏处于不同的"模式"(即:多人游戏,单人游戏等).我正在尝试添加一个解除前一个视图控制器的游戏按钮,但是当用户可以使用多个路径到达此视图时,我不确定如何展开.
换句话说,我的应用程序有点:
A - > B - > C或
A - > D - > C其中C可以(理想地)展开到D或B.
我想知道实现这个的最佳方法是什么?我应该只将所有视图控制器嵌入导航控制器吗?或者有没有办法根据某种条件呈现某个视图控制器?感谢您的任何帮助!
Yuc*_*ong 19
如果您有任何自定义逻辑并希望以编程方式将unwind segue调用到不同的视图控制器,请按以下步骤操作:
添加unwindFromCViewController到两者BViewController和DBViewController:
BViewController.swift
class BViewController : UIViewController {
@IBAction func unwindFromCViewController(segue:UIStoryboardSegue) {
}
}
Run Code Online (Sandbox Code Playgroud)
DViewController.swift
class DViewController : UIViewController {
@IBAction func unwindFromCViewController(segue:UIStoryboardSegue) {
}
}
Run Code Online (Sandbox Code Playgroud)在您的故事板中,创建此segue并为其指定标识符,并将其链接到您在上面定义的操作unwindFromCViewController:
从代码中调用unwind segue:
self.performSegueWithIdentifier("unwindFromCViewControllerSugueId", sender: self)
Run Code Online (Sandbox Code Playgroud)有了它,您可以放松到以前的视图,无论它来自哪里.
Pau*_*w11 10
展开segue进程通常会自动确定先前的UIViewController实例.Apple的技术说明中描述了确切的过程,但总结如下:
从启动展开segue的视图控制器开始,搜索顺序如下:
响应程序链中的下一个视图控制器将发送一条
viewControllerForUnwindSegueAction:fromViewController:withSender:消息.对于以模态方式呈现的视图控制器,这将是调用的视图控制器presentViewController:animated:completion:.否则,parentViewController.默认实现在接收器的
childViewControllers数组中搜索想要处理展开操作的视图控制器.如果接收者的子视图控制器都不想处理展开动作,则接收器检查是否要处理展开动作并返回self(如果是).在这两种情况下,该canPerformUnwindSegueAction:fromViewController:withSender:方法用于确定给定视图控制器是否想要处理展开动作.如果
viewControllerForUnwindSegueAction:fromViewController:withSender:在步骤1中没有返回视图控制器 ,则从响应器链中的下一个视图控制器重复搜索.
因此,精确的过程将取决于您如何呈现视图控制器C - 例如,通过模式演示segue或push segue on a,UINavigationController但只要B和D都执行展开操作,您应该是好的.
popViewController:animated如果您将其推送到导航堆栈上或者以模态方式呈现,我只需调用代码即可转到呈现控制器dismissViewController:animated。
| 归档时间: |
|
| 查看次数: |
7073 次 |
| 最近记录: |