带有 SpriteKit 的 UITableView

Posted

技术标签:

【中文标题】带有 SpriteKit 的 UITableView【英文标题】:UITableView with SpriteKit 【发布时间】:2015-04-05 20:49:31 【问题描述】:

如何使用 spriteKit 实现 UITableView?我知道我已经在 ViewController 文件中创建了 tableView 作为插座,但是如何从我的 gameScene 访问这个 tableView 以便我可以更改位置、大小、单元格内容等。

到目前为止,我还没有找到任何关于这种情况的有用说明或文档。

【问题讨论】:

【参考方案1】:

如果你想在你的场景中使用你的 UITableView(它是在故事板中创建的,你说的是 outlet,所以我猜那是你创建它的地方),你需要做一些事情。

首先为场景中的表格视图创建一个变量。我的 swift 生锈了,但如果是 Objective-C,那就是在 YourScene.h 文件中创建一个属性。

现在,当您实例化您的场景时,您可以设置在您的场景中有出口的表格视图。像这样的...

scene.tableView = tableView
skView.presentScene(scene)

接下来你要在你的场景中实现UITableViewDelegate, UITableViewDataSource 这样你就可以在你的场景中的didMoveToView 中执行此操作...

tableView?.delegate = self;
tableView?.dataSource = self;

现在在你的场景中

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
func cellForRowAtIndexPath(indexPath: NSIndexPath) -> UITableViewCell?

这应该允许您在场景代码中对 tableView 执行任何操作。

请记住 UITableView 是 UIKit 的一部分,并且很可能位于您的 SKView 之上(作为子视图添加)。定位和大小将在 UIKit 坐标系中。

希望这是有道理且有帮助的。

【讨论】:

谢谢,这对我来说更有意义。您能否进一步解释一下这部分:scene.tableView = tableViewskView.presentScene(scene) scene.tableView 部分是什么?那应该是我创建的属性吗? @Reece55 应该在您的视图控制器中。在您的视图控制器中,您应该已经看到skView.presentScene(scene)。另一部分只是将您应该在视图控制器中有一个出口的表格视图设置为您在场景中拥有的变量。这有意义吗? 非常感谢。你帮了大忙。我已经为此工作了很长时间。非常感谢!【参考方案2】:

您可以使用 didMoveToView 中的视图

-(void)didMoveToView:(SKView *)view 
    // your table code
    [view addSubview:myTable];

这里使用 SKView 的视图作为关键。

如果您在另一个没有 SKView 视图的方法中,您可以这样做:

-(void)myMethod 
    SKView* view = self.view;
    // your table code
    [view addSubview:myTable];

【讨论】:

以上是关于带有 SpriteKit 的 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

在 SpriteKit 中创建带有动画的彗星需要认真的帮助

将 AcceptMouseMovedEvents 用于带有 Storyboard 和 Swift 的 SpriteKit 鼠标操作

如何使用 swift 使用带有 spriteKit 的情节提要

这个带有 SpriteKit 代码的 Swift 没有达到预期的效果

带有 Skview 的 ViewController - SpriteKit SKScene

带有 SpriteKit 的着色器仅注册黑色的 alpha