Swift表视图嵌入在Container中

时间:2015-08-14 11:02:35

标签: ios swift uitableview core-data

我有一个在我的主视图中使用的NSManagedObject。

在这个视图中我有两个容器,每个容器都有自己的静态TableViews。

在我的NSManagedObject中,我有一个数组,我想循环,并在屏幕上显示信息,如下所示:

Customer1 Name
Customer1 Type
Customer1 Address

Customer2 Name
Customer2 Type
Customer2 Address

我尝试过使用TableView的路径,我已经添加了一个容器,将tableview嵌入其中,设置了一个自定义单元格并尝试使用一些测试数据填充自定义单元格。当我运行它时,TableView只显示四个空行。 (我可能错过了与行数相关的信息,这就是为什么我的测试数据没有显示):

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete method implementation.
    // Return the number of rows in the section.
    return 0
}

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell =  self.tblPartyDetails.dequeueReusableCellWithIdentifier(
        "JobViewPartyCell", forIndexPath: indexPath)
        as! JobViewPartyCell

    cell.lblPartyName.text = "test name"
    cell.lblPartyAddress.text = "test adddress"

    cell.lblPartyType.text = "test partyType"

    return cell
}

我还必须弄清楚如何将我的NSManagedObject传递到这个TableView类中,对于只是重复的信息块似乎需要付出很多努力......或者......这是唯一的方法?

那么,我是否以正确的方式解决这个问题?如果是这样,我该如何修复它并将我的NSManagedObjects细节添加到TableView。如果我没有正确地解决这个问题,有哪些替代方案?我看了一些其他定制卡'类型的东西,如Facebook和谷歌卡,但这些技术也使用自定义TableViewCells。

修改。 PrepareForSegue功能:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == jobSegueIdentifier {


        if let destination = segue.destinationViewController as? JobViewController {
                            if let jobIndex = tblJobs.indexPathForSelectedRow() {
                                 let workItem:Work = fetchedResultsController.objectAtIndexPath(jobIndex) as! Work
                                destination.workItem = workItem

                            }
        }
    }
}

1 个答案:

答案 0 :(得分:4)

首先,你在numberOfRowsInSection中返回了0,你应该做的就是设置你想要显示的行数,如果你正在测试你的tableView就放了任何数字。

如果你的数据在你的mainView中,你应该将数据传递给包含的tableView,这样你就可以显示它,在你的行数中你应该返回数据数组中的元素数。

首先在故事板中为嵌入segue提供一个标识符,并在主视图中实现prepareForSegue函数,如下所示:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "embedSegueIdentifier" {

        let distinationVC = segue.destinationViewController as? EmbeddedTableViewController //replace EmbeddedTableViewController with your tableViewControllerClass

        distinationVC?.dataArray = yourDataArray //yourDataArray is in your main view and you should define data array in your embedded table view controller

    }

}

并在tableViewController中添加以下内容:

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return dataArray.count

}

我希望这会有所帮助。