Xcode 4.5故事板“退出”

我刚刚安装了Xcode 4.5 for iOS6支持,我在故事板中看到一个名为“退出”的新图标,列在我的视图控制器和“第一响应者”之下等等。一个绿色的小图标,标有“退出”。

我可以find任何东西,也不知道如何使用它。

任何人都知道这件事,它是如何工作的,它是为了什么?

这被称为“ 解体塞恩 ”。 不幸的是,除了在XCode 4.5新function列表中简要提及之外,目前还没有任何文档说明:

展开细节可以允许转换到故事板中现有的场景实例

好消息是有一个从WWDC 2012解释这些生物(除其他事项之外)的会议。

您可以使用开发人员帐户详细信息login到Apple的iOS开发人员中心,然后转到WWDC 2012video页面并观看“在应用中采用故事板”(从顶部开始是第五个)关于展开时间的讨论始于时间37:20 。


更新:这里是一些从苹果的文档更多的信息

一个名为Exit的占位符对象,用于展开seques。 默认情况下,当用户closures一个子场景时,该场景的视图控制器展开(或返回)到父场景 – 也就是最初转换到子场景的场景。 但是,Exit对象使视图控制器可以放松到任意场景。

(从iOS6文档集>常规>入门)

这里是一个很好的例子,你可以实现一个


另一个更新:

以下是苹果公司关于此主题的技术说明 。

想象一下,在故事板中有一系列视图:

A -> ... -> Z

你想在视图Z上有一个button,它允许用户一直回到A

所以你需要做的是给你的观点,你想要一路退出,在这种情况下, A ,一个实例方法被标记为一个IBAction并采取一个单一的UIStoryboardSegue *types的参数。 方法和variables的名称无关紧要。 你在执行中做什么也没有关系。 这是一个例子:

OBJ-C:
A的界面(不是Z的):

 - (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue; 

A的实现(而不是Z )中:

 - (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue { // Only "implemented" to satisfy a respondsToSelector: search. // You can actually implement more stuff here, if you want, IE, if // you need to reach out to a server to mention that this screen was // returned to from a later screen. } 

迅速:
A的来源(不是Z )中:

 @IBAction func cancelSignup(unwindSegue: UIStoryboardSegue) { // Only "implemented" to satisfy a respondsToSelector: search. // You can actually implement more stuff here, if you want, IE, if // you need to reach out to a server to mention that this screen was // returned to from a later screen. } 

现在,在你的故事板中, 控制Z (IE,取消button)上的一个元素拖动到ZExit 。 它将扫描视图层次结构中所有更高级的视图,这些视图具有只接受单个UIStoryboardSegue *IBAction ,并将其列出供您select。

希望这比现有的答案更直接,更有帮助。 我发现这个链接是特别有用的,所以如果有一个细节在阅读我的答案后仍然很模糊,也许这可以帮助你(我试图将这篇长篇文章中的所有有用信息压缩成一个简短的答案): http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html

另请参阅不能连接故事板解开Segue ,它阐明了使Exit图标生效的要求。 在视图控制器层次结构中,您必须拥有更高的方法:

  1. 标记为IBAction

  2. 采取一个参数是一个UIStoryboardSegue *

如果这两个条件都满足,则退出图标将会看到它,并允许您通过从同一个视图控制器中的button进行控制拖动来连接它。

我现在也在这里发布了世界上最简单的例子:

https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p638presentedViewControllerStoryboard(2013年; 7月12日修正)

这显示了现在一个呈现的视图控制器inheritance和返回是多么的容易,而不是你以前为了来回传递信息所做的所有工作(模板中的东西与一个委托和一个协议,所有这些现在都可以删除)。

只需在需求定义中添加一些微妙之处,可能会有所帮助。 这是基于Xcode 4.6的实验。 我发现它是特定的,只有声明(!)的方法,使Xcode所需的控制拖动响应。 这是我发现的全部要求:

  • 标记为IBAction
  • 采取一个参数是一个UIStoryboardSegue *
  • 您必须声明一个操作(但不一定实现(意思是.M实现部分中的方法))。
  • 它可以在任何类的接口声明中,甚至是.M的接口部分,除了appdelegate类。 (我没有看到它在控制器层次结构中的位置的任何依赖关系,你可以添加任何旧文件,系统似乎将具有UIStoryboardSegue参数的所有方法聚合在一起,并显示在Exit图标的菜单上。)注意,如果该方法在故事板编辑器中正在操作的场景的类中,则拖拽菜单甚至会向您显示您的方法,但是它将显示为不带冒号,并且在运行时似乎不会触发任何操作。

例如: -(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;