swift - 添加 ViewController 时出现“无法识别的选择器发送到实例”错误
问题描述
我最近尝试向我的 AR 应用程序添加一个欢迎屏幕,用作主屏幕。当应用程序加载时,用户可以点击按钮,然后应用程序冻结、崩溃并显示代码
"Thread 1: "-[_0_2_2020_2.WelcomeViewController letsGo:]: unrecognized selector sent to instance 0x13ec05e00"
我已经尝试了一些可用的解决方案,但我无法提出解决方案。我认为这与我的 *IBAction 连接有关。非常感谢任何帮助!
import UIKit import RealityKit import ARKit class WelcomeViewController: UIViewController { @IBAction func gotPressed(_ sender: Any) {let storyboard = UIStoryboard(name: "Main", bundle: nil) if let viewController = storyboard.instantiateViewController(withIdentifier: "ViewController") as? ViewController { self.present(viewController, animated: true, completion: nil) /// present the view controller (the one with the ARKit)! } } } class ViewController: UIViewController, ARSessionDelegate { //delay app launch to show splash screen func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { Thread.sleep(forTimeInterval: 3.0) // Override point for customization after application launch. return true } //end splash screen delay @IBOutlet var arView: ARView! override func viewDidLoad() { super.viewDidLoad() arView.session.delegate = self showModel() overlayCoachingView() setupARView() arView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:)))) } func showModel(){ let anchorEntity = AnchorEntity(plane: .horizontal, minimumBounds:[0.7, 0.7]) anchorEntity.scale = [0.2, 0.2, 0.2] let entity = try! Entity.loadModel(named: "COW_ANIMATIONS") entity.setParent(anchorEntity) arView.scene.addAnchor(anchorEntity) } //Overlay coaching view "adjust iphone scan" func overlayCoachingView () { let coachingView = ARCoachingOverlayView(frame: CGRect(x: 0, y: 0, width: arView.frame.width, height: arView.frame.height)) coachingView.session = arView.session coachingView.activatesAutomatically = true coachingView.goal = .horizontalPlane view.addSubview(coachingView) }//end overlay func setupARView(){ arView.automaticallyConfigureSession = false let configuration = ARWorldTrackingConfiguration() configuration.planeDetection = [.horizontal, .vertical] configuration.environmentTexturing = .automatic arView.session.run(configuration) } //object placement @objc func handleTap(recognizer: UITapGestureRecognizer){ let location = recognizer.location(in:arView) let results = arView.raycast(from: location, allowing: .estimatedPlane, alignment: .horizontal) if let firstResult = results.first { let brownCowAnchor = ARAnchor(name: "COW_ANIMATIONS", transform: firstResult.worldTransform) arView.session.add(anchor: brownCowAnchor) } else { print("Object placement failed - couldn't find surface.") //cow animations //let robot = try! ModelEntity.load(named: "COW_ANIMATIONS") let brownCowAnchor = AnchorEntity() let blackCowAnchor = AnchorEntity() //anchor.children.append(robot) //arView.scene.anchors.append(anchor) //robot.playAnimation(robot.availableAnimations[0].repeat(duration: .infinity), //transitionDuration: 0.5, //startsPaused: false) //start cow animation let brownCow = try! ModelEntity.load(named: "COW_ANIMATIONS") let blackCow = try! ModelEntity.load(named: "Cow") brownCow.position.x = -1.0 blackCow.position.x = 1.0 brownCowAnchor.position.z = -2.0 blackCowAnchor.position.z = -2.0 brownCow.setParent(brownCowAnchor) blackCow.setParent(blackCowAnchor) arView.scene.anchors.append(brownCowAnchor) arView.scene.anchors.append(blackCowAnchor) let cowAnimationResource = brownCow.availableAnimations[0] let horseAnimationResource = blackCow.availableAnimations[0] brownCow.playAnimation(cowAnimationResource.repeat(duration: .infinity), transitionDuration: 1.25, startsPaused: false) blackCow.playAnimation(horseAnimationResource.repeat(duration: .infinity), transitionDuration: 0.75, startsPaused: false) //end cow animations } } func placeObject(named entityName: String, for anchor: ARAnchor) { let entity = try! ModelEntity.loadModel(named: entityName) entity.generateCollisionShapes(recursive: true) arView.installGestures([.rotation, .translation], for: entity) let anchorEntity = AnchorEntity(anchor: anchor) anchorEntity.addChild(entity) arView.scene.addAnchor(anchorEntity) } }
解决方案
推荐阅读
- python - 使用 pandas 计算列中的数学运算
- url - IIS URL 301 重写/重定向不起作用
- c# - 无法解析 FxFF 格式的字节
- javascript - 如何将字符串或 null 分配给变量 TypeScript
- android - 没有得到改造日志
- string - 如何将字符串数据类型中的天数(例如:星期一、星期二等)转换为 Tableau 中的天数类型?
- arm64 - 如何在基于 ARMv8A TF-A 的裸机环境中启用 MMU
- python-3.x - tkinter 使用按钮添加/编辑数组
- image - Flutter 让用户在轮播中添加图片
- nestjs - Nest 无法解析 AuthService 的依赖关系