Storyboard 在 Xcode9 中找不到 SKView?

Posted

技术标签:

【中文标题】Storyboard 在 Xcode9 中找不到 SKView?【英文标题】:Storyboard can't find SKView in Xcode9? 【发布时间】:2018-03-27 05:44:39 【问题描述】:

我在 Xcode9 中有一个普通的 .sks 文件,TestScene.sks。

当然,你需要一个 SKView 来“持有”一个 .sks。

如果我以通常的方式手动构造 SKView in code,它可以正常工作。 (我在这篇文章的底部提供了一个方便的示例。)

但是,在 X9 中您可以简单地在情节提要中添加一个 SKView

然后只需在属性检查中选择 .sks 文件....

但是。

它不起作用。我只是得到这个错误:

Main.storyboard: Class Unavailable Xcode.IDEInterfaceBuilder.CocoaTouch.SKView

可能是什么问题?

SpriteKit.framework 包含在 Link Binary ...

可能是什么原因?


第1点:记录一下,如何手动添加代码:

func manuallyAddSceneInCode() 

    let sk: SKView = SKView()
    sk.frame = view.bounds
    sk.backgroundColor = .clear
    view.addSubview(sk)

    let scene = SKScene(fileNamed: "TestScene")!
    scene.scaleMode = .aspectFit
    scene.backgroundColor = .clear

    sk.presentScene(scene)


第 2 点 - 正如 Knight 在下面询问的那样。如果您“只是将常规 UIView 和自定义类拖放到 SKView” - 当然,您不会获得该类的任何“自定义控件”。 (就像您说自定义类是 UILabel 的普通 UIView - 它不像情节提要中的 UILabel 那样“工作”。)


第 3 点 - Knight 似乎一针见血,确实错误中提到的类是“Xcode.IDEInterfaceBuilder....”这是什么鬼?


第4点,我刚在9.0.1试过,同样的问题。

【问题讨论】:

巨额赏金即将到来! 为什么Xcode.IDEInterfaceBuilder.CocoaTouch.SKView这个类很奇怪。当您只删除一个常规的 UIView 并将其自定义类到 SKView 时会发生什么 @Knight0fDragon,有趣的点 - 见编辑。请注意巨额赏金。告诉你的朋友! :) 请不要在您的问题标题中添加诸如“大量赏金”之类的消息。赏金活动时已显示在问题列表中;无需重复。 我找不到任何方法让它工作,我猜这是 Apple 的一个错误(他们最近有这么多错误,令人作呕,)所以我建议提交一个错误报告,以便他们知道正在发生这种情况。 【参考方案1】:

可能是您没有将 Spritekit 导入到拥有该视图的视图控制器中吗?这需要使用 GLKit 视图完成,即使您链接库也是如此。

(至少在 obj-c 中)

【讨论】:

这是 Interface Builder 的问题,与任何代码无关。【参考方案2】:

我刚刚复制了您的错误。该问题似乎与部署目标有关。如果我部署到 ios 9.0,我会得到你的错误,如果我将部署目标增加到 iOS 10,错误就会消失。我猜故事板只支持它。

编辑:

我上传了我的演示项目,你可以查看:

https://github.com/seriouscyrus/SCSpriteKitStoryboard

在 Master 分支中,部署目标是 9.0,当您尝试构建时收到错误,在 iOS10Deployment 分支中已修复。无需重新启动任何东西。

此外,我的错误提供了更多信息,“iOS 10.0 之前的 SKView(NSCoding 在以前的版本中被破坏”。

【讨论】:

我们没有时间彻底调查,但这似乎是解决方案。简而言之,这只是 Xcode 中的一个问题,目前(2017 年末)

以上是关于Storyboard 在 Xcode9 中找不到 SKView?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 的 UISplitViewController“在 Storyboard 中找不到 ViewIdentifier”错误

Xcode 11 在捆绑包 NSBundle 中找不到名为“Main”的情节提要

在对象库中找不到主视图控制器和详细视图控制器

在自定义类下拉菜单 Xcode 8.3.2 中找不到自定义控制器类

启动屏幕可能没有触发 segue。 (LaunchScreen.storyboard)

为什么Xcode不能识别Main.storyboard?