我的SpriteKit游戏中有以下视图控制器:
SKScene
我尝试在 override init(size: CGSize){
super.init(size: size)
weak var myViewController: MyViewController!
myViewController = MyViewController(frame: self.frame)
self.view?.addSubview(myViewController)
}
:
"incorrect argument label in call (have 'frame:', expected 'coder:')"
上面给了我以下错误:
"cannot convert type of 'MyViewController!' to expected argument type 'UIView'"
和
SKScene
我想我做错了什么。如何将我的视图控制器添加到UICollectionView
?
更新
我正在尝试使用SKScene
为我的游戏制作菜单,这就是为什么我尝试将上面的视图控制器(现在显示完整的MenuViewController代码)添加到我的SKView
。但现在我知道我应该将它添加到我的SKView中。我相信此观点可以添加到SKScene
课程import SpriteKit
import GameplayKit
import UIKit
class GameScene: SKScene {
private var label : SKLabelNode?
private var spinnyNode : SKShapeNode?
override func didMove(to view: SKView) {
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let label = self.label {
label.run(SKAction.init(named: "Pulse")!, withKey: "fadeInOut")
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
}
}
中(下方)。怎么办呢?
g_source_new()
答案 0 :(得分:1)
答案对于评论来说太长了,但就此问题而言:incorrect argument label in call (have 'frame:', expected 'coder:')
是因为您正在创建新的MyViewController
对象并使用参数标签{{1}初始化它无论你是否将它作为你的课程的初始化者都是问题。
我们需要查看您的frame
类以及您已设置的初始值设定项,因为您的类似乎只有1个初始化程序,而且似乎是MyViewController
。
请告诉我们您的init(coder: NSCoder)
课程。
答案 1 :(得分:-2)
简单的答案是你不能。 SpriteKit和UIKit是两种不同的动物,它们只通过SKView连接在一起。