嵌入 Segue - iOS 5

Posted

技术标签:

【中文标题】嵌入 Segue - iOS 5【英文标题】:Embed Segue - iOS 5 【发布时间】:2013-01-21 03:54:31 【问题描述】:

我已将一个容器视图拖到我的一个视图控制器上。这带有一个嵌入 Segue。运行会产生这样的结果:

'Could not instantiate class named UIStoryboardEmbedSegueTemplate'

所以从其他几个 *** 问题来看,这似乎没有在 ios 5 中实现。但是,这些问题并没有建议修复。 XCode 不会让我使用任何其他类型的 segue。

如果答案是创建一个自定义容器视图,我会这样做。在过去的几天里,我已经看到了大量的代码。只是想知道是否有办法使用提供的 Container View 对象来做到这一点。

【问题讨论】:

【参考方案1】:

问题在于 Embed segue 是 iOS 6+。 它失败是因为您尝试实例化 iOS 5 中不存在的 EmbedSegue 内部类。如果您需要 iOS 5 支持,明显的解决方案是不要使用 EmbedSegue :)

还有另一个问题 - 用什么代替?我现在遇到了同样的问题;如果我找到任何优雅的架构解决方案,我会分享。


对于任何“老派”的 iOS 开发人员来说,该解决方案似乎都很明显。 以下是你的做法。

    在您的“父”视图控制器中,在 viewDidLoad 中实例化“子”视图控制器:或在合适的时候进行 [self addChildViewController:childVC]; [self.view addSubview:childVC.view]; childVC.view.frame = ....;

现在您应该在 nib 中看到您为子 VC 所做的视图,或者情节提要将显示在您指定它的父视图中。

希望这将有助于任何寻求灵魂的人解耦他们的逻辑:)

干杯, 丹

【讨论】:

刚刚为 iOS 添加了 EmbedSegue 替代方案 也许是个愚蠢的问题,但你能填写第 4 步吗?您是否将 self.view.frame 分配给它? 我会说这取决于你的情况。如果您希望子视图占用其父视图上的所有可用空间,您可能希望使用 childVC.view.frame = parentView.bounds;在这种情况下,父视图可能是 self.view 或占位符视图。当您在 IB 和代码中对齐占位符时,占位符非常有用,只需将 childVC.view 连接到占位符视图,无需手动计算子视图原点和大小。如果您愿意,您仍然可以使用 childVC.view.frame = CGRectMake(...);并手动指定大小和原点。对你的案子有帮助吗? 感谢您的信息 - 这段代码的任何变体都对我有用,所以我最终删除了我的 ContainerView 并改用了一个单一的 ViewController。现在一切正常! 当然,如果您使用“添加子 VC”方法,您不会使用嵌入 segue 或容器视图。请使用纯 UIView 作为占位符。干杯。

以上是关于嵌入 Segue - iOS 5的主要内容,如果未能解决你的问题,请参考以下文章

使用嵌入Segue公司将数据传入容器视图

程序化嵌入 segue

UINavigationViewController 控件 UIContainerView 嵌入 segue

在 Swift 中为嵌入式 tableView 中的 segue 做准备

是否可以在带有代码的滚动视图中嵌入 segue/包含视图?

prepareForSegue 未在嵌入式 segue 中调用