我在sceneView: ARSCNView中放了一个VC
但是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
}
}当我发现一个锚并将VC放到场景中时,我就触发了这个事件。
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"
}但在主视图中从未调用此操作:

发布于 2018-09-28 23:07:27
最后我找到了解决办法
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而且起作用了!当点击按钮时,我可以更改文本。
https://stackoverflow.com/questions/52563316
复制相似问题