Как добавить кнопку навигации в сцену? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть приложение, которое имеет несколько представлений, и одним из них является SceneView, как вы можете видеть ниже. SceneView не является начальным видом. Пользователи могут открыть SceneView, запустив переход из другого ViewController, но когда я хочу добавить навигационную панель в SceneView, произошла ошибка.

Итак, как я могу добавить панель навигации или кнопку в sceneView? Если нет способа, как я могу отклонить переход от SceneView?

enter image description here

1 Ответ

0 голосов
/ 22 апреля 2020

Я не смог найти способ добавить navigationBar поверх sceneView, но я понял, как добавить кнопку к sceneView. Если мы создадим кнопку программно и добавим ее в сцену, мы сможем перемещаться по этой кнопке.

Вот что мы можем сделать;

import UIKit
import SceneKit

class ViewController: UIViewController {

var scnView: SCNView?
var exampleScn = SCNScene(named: "ExampleScn")

override func viewDidLoad() {
    super.viewDidLoad()
}

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    self.scnView = SCNView(frame: self.view.frame)
    self.scnView?.scene = exampleScn

    self.view.addSubview(self.scnView!)

    let button = UIButton(type: .system)
    button.tintColor = UIColor.black
    button.titleLabel?.font = UIFont(name: "Arial", size: 25)
    button.setTitle("Back", for: .normal)
    button.sizeToFit()
    button.addTarget(self, action: #selector(didPressBack), for: .touchUpInside)
    button.center.x = 50
    button.frame.origin.y = 20
    scnView.addSubview(button)
}

@objc func didPressBack (sender: UIButton!) {
    dismiss(animated: true, completion: nil)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
}

если мы сделаем это, результат будет выглядеть так:

enter image description here

...