2015-04-05 41 views
1

如何用spriteKit實現UITableView?我知道我已經在ViewController文件中創建了tableView作爲插座,但是如何從我的gameScene訪問此tableView,以便我可以更改位置,大小,單元格內容等。UITableView與SpriteKit

我迄今爲止還沒有能力找到有關這種情況的任何有用的指示或文件。

回答

6

,你說出口,所以我我猜是你創造它的地方),你需要做一些事情。

首先在您的場景中爲您的表視圖創建一個變量。我的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座標系中。

希望這是有道理的,是有益的。

+0

謝謝你,這對我更有意義。你能否稍微解釋一下這個部分:'scene.tableView = tableView'和 'skView.presentScene(scene)''scene.tableView'部分是什麼?那應該是我創造的財產嗎? – 2015-04-06 00:02:56

+0

@Reece55應該在你的視圖控制器中。在你的視圖控制器中,你應該已經看到'skView.presentScene(scene)'。另一部分只是設置你的表格視圖,你應該在你的視圖控制器中有一個插口,以適應你場景中的變量。那有意義嗎? – 2015-04-06 00:05:42

+0

非常感謝。你一直是一個巨大的幫助。我一直在研究這個問題很長時間。非常感激! – 2015-04-06 00:50:04

4

您可以使用視圖中didMoveToView

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

使用視圖SKView是這裏的關鍵。

如果你是在不具備SKView另外一個方法,你可以這樣做:如果你想使用你的UITableView(這是在故事板創建

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