Nic*_*ans 7 uitableview ios sprite-kit swift
我目前遇到了一个问题.我正在创建一个游戏,我希望能够使用UITableView来显示数据(如级别).但是,我严格使用SpriteKit,似乎无法让UITableView和SpritKit工作.
我尝试在我的'GameScene'类(一个SKScene)中创建一个名为'gameTableView'的变量,并将其值设置为我创建的一个名为'GameRoomTableView'的类.
var gameTableView = GameRoomTableView()
Run Code Online (Sandbox Code Playgroud)
该类具有'UITableView'的值(注意我没有将它设置为UITableViewController).
class GameRoomTableView: UITableView {
}
Run Code Online (Sandbox Code Playgroud)
我能够将tableView添加为我的SKView的子视图.我在我的GameScene类中的'DidMoveToView'函数中完成了这个.在其中得到的观点显示.
self.scene?.view?.addSubview(gameRoomTableView)
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何更改部分的数量以及如何添加单元格.类不会让我访问这些类型的东西,除非它是一个viewController并且我需要一个实际的ViewController来获取它上班.我看过很多游戏都使用tableViews,但我不确定他们是如何让它工作的,哈哈.
请不要犹豫,告诉我我做错了什么,如果你知道一个更好的方法来解决这个问题.如果您有任何疑问,请告诉我.
Ale*_*ano 15
通常我不喜欢UITableView你做的子类,我更喜欢直接使用UITableView委托和数据源到我的SKScene类来控制表规范和数据到我的游戏代码.
但是你可能有自己的个人计划,所以我举个例子告诉你:
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()
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
| 归档时间: |
|
| 查看次数: |
2288 次 |
| 最近记录: |