ChatGPT解决这个技术问题 Extra ChatGPT

Xcode 4.5 故事板“退出”

我刚刚安装了支持 iOS6 的 Xcode 4.5,我在我的 Storyboard 中看到了一个名为“Exit”的新图标,它与“First Responder”等一起列在我的视图控制器下。一个标有“Exit”的绿色小图标。

我可以找到任何关于它的信息,也不知道如何使用它。它是如何工作的?

在一个类似的问题上,我发布了这个答案:stackoverflow.com/questions/12569316/… 它有助于解释如何使用退出(展开)功能

A
Alladinian

这被称为“Unwind Segue”。不幸的是,到目前为止,除了 XCode 4.5 新功能列表中的简短提及外,没有任何文档说明:

展开转场可以允许过渡到情节提要中的现有场景实例

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

您只需使用您的开发者帐户详细信息登录 Apple 的 iOS 开发中心,然后转到 WWDC 2012 videos page 并观看“在您的应用程序中采用 Storyboard”(从顶部起第五个)关于放松转场的讨论从 37:20 开始。

更新:以下是 Apple 文档中有关该主题的更多信息

一个名为 Exit 的占位符对象,用于展开序列。默认情况下,当用户关闭子场景时,该场景的视图控制器会展开(或返回)到父场景——即最初转换到子场景的场景。但是,Exit 对象使视图控制器能够展开到任意场景。

(来自 iOS6 文档集 > 常规 > 入门)

And here is a nice example of how you can implement one

另一个更新:

Here is a technical note from Apple 关于此主题。


好的,那你怎么用呢?尝试从视图控制器底部的退出对象单击控件,但它不会链接到任何东西。
您基本上必须为您的 unwind segue 定义一个方法,然后从一个元素连接到 exit 按钮,选择您希望调用的方法。您可以找到 an example here(我也更新了我的答案以包含示例)
-1:很多词,很少有用的信息。在阅读了这篇文章并在我自己的应用程序中使用它之后,我写了这个答案,希望它更有用:stackoverflow.com/a/25829835/901641
这就是为什么我喜欢 Apple 不存在的文档。伙计,有人应该在那里被解雇。
@SpaceDog 也许这就是发生的事情,他们都被解雇了,没有人留下来写文档:/我喜欢 WWDC 视频 - 2012 年显然是苹果达到顶峰的一年。
A
ArtOfWarfare

假设您的故事板中有一系列视图:

A -> ... -> Z

您希望在视图 Z 上有一个按钮,允许用户一直返回到 A

因此,您需要做的是给出您想要一直返回的视图,在本例中为 A,这是一个标记为 IBAction 的实例方法,并接受一个 {3 类型的参数}。方法和变量的名称无关紧要。您在实现中所做的事情也无关紧要。这是一个例子:

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.
}

Swift:
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.
}

现在,在情节提要中,controlZ 上的元素(IE,取消按钮)拖动到 ZExit。它将扫描视图层次结构中更高层的所有视图,这些视图具有仅接受单个 UIStoryboardSegue * 作为操作的 IBAction,并列出它们以供您选择。

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


C
Community

另请参阅Cannot Connect Storyboard Unwind Segue,其中阐明了使退出图标栩栩如生的要求。在视图控制器层次结构中,您必须有一个方法,即:

标记为 IBAction 采用一个参数,即 UIStoryboardSegue*

如果满足这两个条件,Exit 图标将看到它,并允许您通过从同一视图控制器中的按钮拖动来连接到它。

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

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

这表明现在在呈现的视图控制器之间进行切换是多么容易,而不是之前为了来回传递信息而必须做的所有工作(模板中带有委托和协议的东西) ,现在可以删除所有这些)。


f
farisolusa

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

标记为 IBAction

采用一个参数,即 UIStoryboardSegue*

您必须声明一个操作(但不一定要实现 [意味着 .M 实现部分中的方法])。

它可以在任何类的接口声明中,甚至是 .M 的接口部分,除了 appdelegate 类。 (我没有看到它在控制器层次结构中的位置有任何依赖性。您可以添加任何旧文件,系统似乎聚合了所有具有 UIStoryboardSegue 参数的方法并将它们显示在退出图标的菜单上。)请注意,控制-如果该方法在情节提要编辑器中操作的场景的类中,则拖动菜单甚至会显示您的方法,但它会出现没有冒号并且似乎不会在运行时触发任何操作。

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