所有选择Segue之间有什么区别?

334

同一个链接现在正式为https://help.apple.com/xcode/mac/8.0/#/dev7be043cad。存档链接为https://web.archive.org/web/20140604140305/https://developer.apple.com/library/ios/recipes/xcode_help-interface_builder/articles-storyboard/StoryboardSegue.html。 - Cœur
Segue文档链接为https://help.apple.com/xcode/mac/8.0/#/dev564169bb1 - Cœur
4个回答

576
这里是转场的快速概述,每种类型都有一个示例。 Show - 将目标视图控制器推入导航堆栈中,从右侧滑动到顶部,提供返回按钮以返回 - 如果未嵌入在导航控制器中,则会以模态方式呈现。
示例: 在设置中导航,例如点击“通用”>“关于”。 Show Detail - 用于分割视图控制器中,在多列界面中替换辅助视图控制器,或者如果折叠为一列,则将其推入导航控制器中。
示例: 在消息中,点击对话将显示对话详情 - 在两列布局中替换右侧的视图控制器,或者在单列布局中推送对话。 Present Modally - 根据模态呈现和转换样式以各种方式呈现视图控制器 - 最常用于以从底部向上动画显示表单的方式呈现视图控制器。
示例: 在设置中选择 Face ID & Passcode。 弹出式呈现 - 在iPad上运行时,目标将以弹出窗口的形式呈现,点击窗口外任何地方都将使其消失 - iPhone也支持弹出窗口,但默认情况下它会以模态视图控制器的形式呈现。
示例:在日历中点击“+”按钮。 自定义 - 您可以实现自己的自定义segue,并控制其行为。 嵌入 - 您可以将一个视图控制器嵌入到另一个视图控制器中,例如导航、选项卡和分割视图控制器,以及自定义容器。 反向 - 您可以使用反向segue返回到以前的视图控制器,即使有许多屏幕被推送/呈现在所有这些屏幕的顶部,它们都将被关闭。
不再建议使用的segue本质上是上述segue的非自适应等效物。这些segue类型在iOS 8中已经被弃用:Push、Modal、Popover、Replace。

更多信息,请查看使用 Segues 文档,该文档还解释了 Segues 的类型以及如何在 Storyboard 中使用它们。此外,请参阅来自 WWDC 2014 的 Session 216 使用 UIKit 构建自适应应用程序。他们讨论了如何使用这些新的自适应 Segues 构建自适应应用程序,并构建了一个演示项目来利用这些 Segues。


你能定义一下推送和显示转场之间的区别吗? - MetalJr
@Gautham 抱歉,我不明白问题是什么。是的,show 是自适应的,而 push 则不是。 - Jordan H
@Joey 作为一个 iOS 开发新手,我想感谢您的清晰解释。1)但是展示/模态 segue 有什么区别呢?如果您将自定义返回按钮添加到显示为模态的 VC 中,那么意义何在? 2)如果我想重置导航堆栈,应该使用哪种类型的 segue?例如,用户点击“账户”,然后进入应用程序中的其帐户页面。然后,该帐户页面应显示汉堡图标/菜单,而不是返回箭头以返回上一个 VC。 - user2722667
任何segue是否取决于视图是否在视图控制器容器内?即是否可以没有导航控制器而有一个“show”? - Ian Warburton
是的@IanWarburton,上下文确实决定了可用的segue。如果没有导航控制器,您无法显示即推送。(您可以只实现导航控制器并隐藏其导航栏。) - Jordan H
显示剩余7条评论

244
为了更加清晰明了,我想通过这些gif图解释@Joey在上面的答案: 显示 输入图像描述 显示详情 输入图像描述 模态呈现 输入图像描述 作为弹出窗口呈现 输入图像描述

8
这是一个很好的视觉展示,但需要做一处更正:在 iPhone 上,“显示详细信息segue” 的行为类似于模态 segue,而不是如此展示的“显示segue”行为。 - Zig
1
非常好的答案。谢谢! - Manuel Rodriguez

25
文件已经移动到这里:https://help.apple.com/xcode/mac/8.0/#/dev564169bb1 这里无法复制图标,但以下是它们的描述:
- Show: 根据屏幕内容,在详细或主区域中呈现内容。如果应用程序显示主和详细视图,则将内容推送到详细区域。如果应用程序仅显示主或详细信息,则将内容推送到当前视图控制器堆栈的顶部。 - Show Detail:在详细区域中展示内容。如果应用程序显示主和详细视图,则新内容将替换当前详细内容。如果应用程序仅显示主或详细信息,则内容将替换当前视图控制器堆栈的顶部。 - 以模态方式呈现:模态呈现内容。 - 作为泡泡窗口显示:将内容作为连接到现有视图的气泡窗口显示。 - 自定义:通过使用自定义segue创建自己的行为。

1

对于那些更喜欢实践学习的人,选择dock中的segue,打开属性检查器并在不同的segue类型之间切换(下拉菜单"Kind")。这将显示针对每个segue类型具体的选项:例如,你可以看到“以模态方式显示”允许你选择过渡类型等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接