ARKit вставить VC захвата событий Swift 4 - PullRequest
0 голосов
/ 29 сентября 2018

Я помещаю VC в sceneView: ARSCNView

, но события SecondVC не работают. Мне нужно изменить текст, когда пользователь нажимает кнопку, вот мой код:

class ViewController: UIViewController, ARSCNViewDelegate,ARSessionDelegate {

   let vc = SecondVC()
    var viewVC = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()

// I Get te reference to my view

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let viewController = storyboard.instantiateViewController(withIdentifier :"SecondVC") as! SecondVC
        viewVC = viewController.view

        // Set the view's delegate
        sceneView.delegate = self
        sceneView.session.delegate=self

    }
}

И я запускаю событие, когда я обнаруживаю якорь и помещаю ВК в сцену

    func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {


      if self.detectedDataAnchor?.identifier == anchor.identifier {

              let node = SCNNode()
               let plane = SCNPlane(width: 0.2, height: 0.2)
                plane.firstMaterial?.diffuse.contents = viewVC
                let planeNode = SCNNode(geometry: plane)
                planeNode.opacity = 0
                node.addChildNode(planeNode)
              return node
       }
    return nil
}

В моем классе SecondVC:

@IBOutlet weak var label: UILabel!

    @IBAction func pressButton(_ sender: UIButton) {

        label.text = "I changed"
    }

Но действие никогда не вызывается в главномпросмотр: (

Arkit image

1 Ответ

0 голосов
/ 29 сентября 2018

Наконец я нашел решение

1 Я создал файл xib 2 Получите доступ к файлу 3 Покажите в сцене следующее:

let node = SCNNode()
let plane = SCNPlane(width: 0.2, height: 0.2)
            plane.firstMaterial?.diffuse.contents = viewToShow
            let planeNode = SCNNode(geometry: plane)
            node.addChildNode(planeNode)

return node

и все работает!при нажатии на кнопку я могу изменить текст

...