所以我是IOS编程新手,我使用的是Swift语言。 做了几个初学者的应用程序。我在确定显示(例如推送)和已弃用的推送段之间的差异时遇到了一些麻烦。
我想要做的是从 ViewController A (嵌入导航控制器B )显示/推送到导航控制器C (包含 View Controller D )。
因为当我禁用“使用大小类”时,推送 segue不起作用并将报告错误“推送到导航控制器不是支持“。这个错误很有意义,因为你只能推送普通的视图控制器。
但是当我启用“使用大小类”(将Viewcontroller变为方形而不是矩形)时,我能够显示(例如推送)导航控制器,这真的让我很困惑。
那么显示(例如推送)与不推荐的推送之间的主要区别是什么?至于我的知识,没有重大的功能差异,但事实似乎证明我错了,让我感到困惑..
答案 0 :(得分:3)
<强>更新强>
我重新创建了你观察到的行为。 显示(例如推送) segue确实可以从嵌入在navigationController中的一个viewController到嵌入在不同navigationController中的第二个viewController。
请注意,当推送发生时,第二个viewController以正常推送方式滑入,并出现一个后退按钮,将您带回第一个viewController。这告诉您第二个viewController实际上被推送到第一个navigationController的堆栈上。因此,它不是向您提供错误消息,而是忽略您的第二个navigationController。
使用navigationController时,只有第一个viewController嵌入在navigationController中。您不必在navigationController中嵌入后续的viewControllers,因为当您从navigationController堆栈中的先前viewController连接推送 segue时,故事板会识别出这个新的viewController由navigationController控制,它将在顶部添加navigationBar。
原始答案:
显示(例如推送) segue是自适应搜索。它根据情况选择正确的segue类型。
所以,它的工作原理是因为它实际上是在你的情况下做一个模态 segue,如果你没有使用大小类,它就有效。您会注意到,呈现的viewController实际上从底部滑入,这是模态 segue的标志。
您可以在此处找到相关信息: Backward Compatibility of Active Segues