Utilizando un UITableView en Spritekit

Actualmente tengo un problema. Estoy creando un juego y quiero poder usar un UITableView para mostrar los datos (Me gusta los niveles). Sin embargo, estoy usando estrictamente SpriteKit y parece que no puede funcionar el UITableView y SpritKit.

Intenté crear una variable en mi class 'GameScene' (que es un SKScene) llamada 'gameTableView' y su valor se estableció en una class que hice llamada 'GameRoomTableView'.

var gameTableView = GameRoomTableView() 

La class tenía el valor de "UITableView" (observe que no lo configuré en UITableViewController).

 class GameRoomTableView: UITableView { } 

Pude agregar tableView como una subvista de mi SKView. Lo hice en mi function 'DidMoveToView' que está dentro de mi class GameScene. En el que obtuvo la vista para mostrar.

 self.scene?.view?.addSubview(gameRoomTableView) 

Sin embargo, no sé cómo cambiar cosas como la cantidad de secciones y cómo agregar celdas. La class no me permitirá acceder a ese tipo de cosas a less que sea un viewController y con eso necesitaría un ViewController real para getlo trabajar. He visto muchos juegos usar tableViews, pero no estoy seguro de cómo lo hicieron funcionar, jaja.

Por favor, no dudes en decirme qué estoy haciendo mal y si sabes de una mejor manera de hacerlo. Hazme saber si tienes alguna pregunta.

Por lo general, no prefiero la subclass UITableView como tú lo haces, prefiero usar el delegado UITableView y el origen de datos directamente en mi class SKScene para controlar las especificaciones de las tablas y los datos en mi código de juego.

Pero probablemente tengas tu esquema personal, así que te pongo un ejemplo para seguir tu request:

 import SpriteKit import UIKit class GameRoomTableView: UITableView,UITableViewDelegate,UITableViewDataSource { var items: [String] = ["Player1", "Player2", "Player3"] override init(frame: CGRect, style: UITableViewStyle) { super.init(frame: frame, style: style) self.delegate = self self.dataSource = self } requinetworking init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } // MARK: - Table view data source func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return items.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell")! as UITableViewCell cell.textLabel?.text = self.items[indexPath.row] return cell } func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { return "Section \(section)" } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("You selected cell #\(indexPath.row)!") } } class GameScene: SKScene { var gameTableView = GameRoomTableView() private var label : SKLabelNode? override func didMove(to view: SKView) { self.label = self.childNode(withName: "//helloLabel") as? SKLabelNode if let label = self.label { label.alpha = 0.0 label.run(SKAction.fadeIn(withDuration: 2.0)) } // Table setup gameTableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") gameTableView.frame=CGRect(x:20,y:50,width:280,height:200) self.scene?.view?.addSubview(gameTableView) gameTableView.reloadData() } } 

Salida :

introduzca la descripción de la imagen aquí