gpt4 book ai didi

ios - Swift 无法将类型 'UIView' 的值转换为 'SKView'

转载 作者:行者123 更新时间:2023-11-28 12:11:35 25 4
gpt4 key购买 nike

首先,我回顾了相关问题:

这些都没有为我提供明确的答案,我无法从我的主 ViewController 中展示一个包含 SKView 的 Controller ,例如:

import UIKit
import SceneKit
import SpriteKit

class ViewController: UIViewController {
var sceneView: SCNView!
var gameScene = GameScene()
var spriteScene: OverlayScene!

override func viewDidLoad() {
super.viewDidLoad()

sceneView = SCNView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
sceneView.scene = gameScene
}

func showModal() {
let popupViewController = PopupViewController()
popupViewController.modalPresentationStyle = .popover
present(popupViewController, animated: true, completion: nil)
}
}

但问题似乎出在调用 PopupViewController 时:

import UIKit
import SpriteKit

class PopupViewController:UIViewController {
var sceneView:SKView!
var spriteScene:PopupScene!

override func viewDidLoad() {
view.backgroundColor = UIColor.green
view.scene = spriteScene

super.viewDidLoad()
}
}

出现错误:

Could not cast value of type 'UIView' (0x1b48c69c8) to 'SKView' (0x1b3b254b0).

最佳答案

查看您的答案,您似乎正在使用 PopupViewController 的主 view 来添加场景,而不是新的 sceneView 你声明的。正如 Nathan Hitchings 在评论中所说,解决此问题的第一种方法是覆盖 loadView 并设置 self.view = sceneView。另一种选择是打开你的 Storyboard或 .xib 并将主视图的类类型设置为 SKView 然后你可以完全删除 sceneView 变量并使用 self.view。两者本质上做同样的事情,但是以两种不同的方式。确保在使用 sceneView 之前也给它一个值,因为目前它似乎保持未初始化状态。如果您需要我澄清任何事情,请告诉我。

第一个选项看起来像这样:

override func loadView() {
sceneView = SKView()
sceneView.backgroundColor = .white

self.view = sceneView
}

关于ios - Swift 无法将类型 'UIView' 的值转换为 'SKView',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48348041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com