在SKScene中使用TableViewController

时间:2016-06-01 01:11:12

标签: swift uitableview sprite-kit

每当我将特定节点作为一个小窗口单击时,我希望TableViewController出现在场景中。我创建了一个TableViewController类来配置它。这是我在SkScene中的代码:

        let table = Table()
        let smallerRect = CGRectMake(100, 100, 200, 100)
        let navRect = CGRectMake(0, 100, 200, 200)
        let nav = UINavigationController(rootViewController: table)
        nav.view.frame = navRect
        let frameView = UIView(frame: smallerRect)

        frameView.backgroundColor = UIColor.redColor()
        table.view.frame = smallerRect
        frameView.addSubview(nav.view)
        self.view.addSubview(frameView)

表类:

import UIKit

class Table: UITableViewController {

    var names = ["name1", "name2", "name3"]

  override func viewDidLoad() {
    super.viewDidLoad()

 }
 override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }
 override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return names.count
    }


 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) 

        cell.textLabel?.text = names[indexPath.row]

        return cell
    }
}

问题是应该包含tableview的UIView出现,但表本身并不存在。 我会感激任何帮助,或者即使有人有更好的方法来实现我想要的东西。

1 个答案:

答案 0 :(得分:0)

您应该根据frameView的 界限 设置navViews / tableview框架。

哪个是(0,0,200,200)。目前正在发生的事情是,当您的表被添加为帧视图的子视图时,它会偏移100.因此它被绘制在帧视图边界之外。

这样的事可能。

    let table = Table()
    let smallerRect = CGRectMake(100, 100, 200, 100)
    let navRect = CGRectMake(0, 0, 200, 200)
    let nav = UINavigationController(rootViewController: table)
    nav.view.frame = navRect

    let frameView = UIView(frame: smallerRect)
    frameView.backgroundColor = UIColor.redColor()
    table.view.frame = frameView.bounds

    frameView.addSubview(nav.view)
    self.view.addSubview(frameView)

如果没有Table代码,很难知道在哪里可以使用它。