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 中找不到自定义控制器类