ios swift uitableview sprite-kit

ios - Usando una UITableView en Spritekit



swift sprite-kit (1)

Por lo general, no prefiero la subclase UITableView mientras lo hace, prefiero usar el delegado UITableView y el origen de datos directamente en mi clase SKScene para controlar tanto las especificaciones de la tabla como los datos de mi código de juego.

Pero probablemente tenga su esquema personal, así que le doy un ejemplo para que siga su solicitud:

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 } required 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 :

Actualmente estoy teniendo un problema. Estoy creando un juego y quiero poder usar una UITableView para mostrar datos (niveles Like). Sin embargo, estoy usando estrictamente SpriteKit y parece que no puede hacer que UITableView y SpritKit funcionen.

Intenté crear una variable en mi clase ''GameScene'' (que es un SKScene) llamada ''gameTableView'' y su valor establecido en una clase que hice llamada ''GameRoomTableView''.

var gameTableView = GameRoomTableView()

La clase tenía el valor de ''UITableView'' (nótese que no lo configuré en UITableViewController).

class GameRoomTableView: UITableView { }

Pude agregar TableView como una subvista de mi SKView. Hice esto en mi función ''DidMoveToView'' que está dentro de mi clase GameScene. En el cual obtuvo la vista para mostrar.

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

Sin embargo, no sé cómo cambiar cosas como el número de secciones y cómo agregar celdas. La clase no me deja acceder a ese tipo de cosas a menos que sea un controlador de vista y con eso necesitaría un ViewController real para obtenerlo. trabajar. He visto muchos juegos que usan TableViews, pero no estoy seguro de cómo lo hicieron funcionar, jaja.

Por favor, no dudes en decirme lo que estoy haciendo mal y si sabes de una mejor manera de solucionar esto. Hazme saber si tienes alguna pregunta.