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)上的一个元素拖动到Z
的Exit
。 它将扫描视图层次结构中所有更高级的视图,这些视图具有只接受单个UIStoryboardSegue *
的IBAction
,并将其列出供您select。
希望这比现有的答案更直接,更有帮助。 我发现这个链接是特别有用的,所以如果有一个细节在阅读我的答案后仍然很模糊,也许这可以帮助你(我试图将这篇长篇文章中的所有有用信息压缩成一个简短的答案): http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html
另请参阅不能连接故事板解开Segue ,它阐明了使Exit图标生效的要求。 在视图控制器层次结构中,您必须拥有更高的方法:
-
标记为IBAction
-
采取一个参数是一个UIStoryboardSegue *
如果这两个条件都满足,则退出图标将会看到它,并允许您通过从同一个视图控制器中的button进行控制拖动来连接它。
我现在也在这里发布了世界上最简单的例子:
这显示了现在从一个呈现的视图控制器inheritance和返回是多么的容易,而不是你以前为了来回传递信息所做的所有工作(模板中的东西与一个委托和一个协议,所有这些现在都可以删除)。
只需在需求定义中添加一些微妙之处,可能会有所帮助。 这是基于Xcode 4.6的实验。 我发现它是特定的,只有声明(!)的方法,使Xcode所需的控制拖动响应。 这是我发现的全部要求:
- 标记为
IBAction
- 采取一个参数是一个
UIStoryboardSegue
* - 您必须声明一个操作(但不一定实现(意思是
.M
实现部分中的方法))。 - 它可以在任何类的接口声明中,甚至是
.M
的接口部分,除了appdelegate类。 (我没有看到它在控制器层次结构中的位置的任何依赖关系,你可以添加任何旧文件,系统似乎将具有UIStoryboardSegue
参数的所有方法聚合在一起,并显示在Exit图标的菜单上。)注意,如果该方法在故事板编辑器中正在操作的场景的类中,则拖拽菜单甚至会向您显示您的方法,但是它将显示为不带冒号,并且在运行时似乎不会触发任何操作。
例如: -(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;