ios - Xcode 6 中的“Show”segue 将 viewcontroller 呈现为 iOS 7 中的模态

标签 ios swift uistoryboardsegue

我的 iPhone 应用程序(使用 swift 构建)中有两个 View Controller ,该应用程序使用 Xcode 6.1 构建并使用 Storyboard。

第一个 View Controller 嵌入在 Storyboard 中的导航 Controller 中,第二个 View Controller 的转场是“显示”转场。

当应用程序运行时,它在 iOS 8.x 中正确地将转换显示为推送,但在 iOS 7.x 中它显示为没有导航栏的模态。

无论是 iOS 7 还是 iOS 8,我的应用程序要求都将转换显示为推送。有什么想法可以使它在两个 iOS 版本中都作为推送工作吗?

我看到一篇相关帖子提到了这个问题,但找不到问题的解决方案:Adaptive segue in storyboard Xcode 6. Is push deprecated?

感谢任何帮助...

谢谢

最佳答案

This solution is different from the others in the following ways:

  1. 它包括检查和验证问题的方法
  2. 问题原因溯源(segue类型的变化)
  3. 解决方案非常简单(删除并重新创建一个新的 segue)
  4. 请注意文中要求

我刚刚给了一个very detailed SO answer这充分解释了正在发生的事情和原因,但简单的解决方案是您可以删除未推送的 Segue,然后在 Storyboard上重新创建它。原因是 segue 中可能存在一些损坏的 xml(请参阅扩展答案以获取示例/说明如何确认此问题)。

在您确认您在 View 层次结构中至少有一个 UINavigationController 之后,请确保转场不是手动转场并且没有与之关联的操作(通过在 Storyboard 中查看转场作为源代码)。删除现有的 segue,然后按住 Ctrl 键从 UIView/UIControl 拖动到目标 View Controller ,如果需要自定义操作,则在 prepareForSegue 中拦截对目标 Controller 的调用。

Also to confirm that this solution works for you please do the following:

  • 验证您的初始 View Controller (上面有箭头)是一个 UINavigationController 并且它有一个正常的内容 View Controller ,因为它是 Root View Controller 。 (或者你嵌入你的 UINavigationController 内的初始 View Controller )
  • 阅读我对一个非常相似的问题(上面链接)的早期回答的扩展评论。

关于ios - Xcode 6 中的“Show”segue 将 viewcontroller 呈现为 iOS 7 中的模态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26649180/

相关文章:

ios - 并不可怕的Segues

ios - 如何在 Xcode 中修复 "Type of expression is ambiguous without more context"

ios - 根据已排序的另一个数组的顺序调整一个数组的顺序

ios - 使用 lldb 呈现 ViewController

swift - 从另一个 Swift 类访问 navigationItem.title

swift - 联系框架在附加电话号码时崩溃应用程序

iOS 8 不再支持 UITextAutocapitalizationTypeNone

ios - 如何在iPhone的核心数据中存储许多图像和.mp3文件?

ios - 如何制作 Ask View Controller iOS

ios - 使用自定义 Segue 快速切换到和从 Table ViewController 问题