显示tableview Parse中类子类别的数据

时间:2015-03-25 21:49:08

标签: ios uitableview swift pointers parse-platform

我在Parse后端有两个类。 类别: - 类别 - > Kategorien(图片,名称) - 子类别 - > Unterkategorien(图像,名称,类别(指针))

我想为每个类提供一个TableView。应该是这样的,我在第一个TableView中选择一个类别,并使用所选类别的所有子类别来到下一个TableView。

使用以下代码,我将显示Category类中的数据:

import UIKit

class KategorienTableViewController: PFQueryTableViewController {

// Initialise the PFQueryTable tableview
override init!(style: UITableViewStyle, className: String!) {
    super.init(style: style, className: className)
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    // Configure the PFQueryTableView
    self.parseClassName = "Kategorien"
    self.textKey = "name"
    self.pullToRefreshEnabled = true
    self.paginationEnabled = false
}

// Define the query that will provide the data for the table view
override func queryForTable() -> PFQuery! {
    var query = PFQuery(className: "Kategorien")
    query.orderByAscending("name")
    return query
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject) -> PFTableViewCell {

    var cell = tableView.dequeueReusableCellWithIdentifier("KategorienTableCell") as KategorienTableCell!
    if cell == nil {
        cell = KategorienTableCell(style: UITableViewCellStyle.Default, reuseIdentifier: "KategorienTableCell")
    }

    // Extract values from the PFObject to display in the table cell
    cell.name.text = object["name"] as String!

    var thumbnail = object["bild"] as PFFile
    var initialThumbnail = UIImage(named: "Kategorien")
    cell.bild.image = initialThumbnail
    cell.bild.file = thumbnail
    cell.bild.loadInBackground()

    return cell
}

 // In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    // Get the new view controller using [segue destinationViewController].
    var unterkategorienScene = segue.destinationViewController as UnterkategorienTableViewController

    // Pass the selected object to the unterkategorien view controller.
    if let indexPath = self.tableView.indexPathForSelectedRow() {
        let row = Int(indexPath.row)
        unterkategorienScene.aktuellesObject = objects[row] as? PFObject
        //println(unterkategorienScene.aktuellesObject)
    }
}
}

现在我遇到的问题是我不知道如何在第二个TableViewController中显示所选类别的所有子类别(unterkategorien)。子类别具有指向类别的Parse指针,但在这种情况下我应该如何使用它? 当我第一次在第一个TableView中选择一个类别时,它会在第二个Tableview中显示所有子类别。

我的第二个TableViewController的代码实际上是这样的:

import UIKit

class UnterkategorienTableViewController: PFQueryTableViewController {
var aktuellesObject : PFObject?



  // Initialise the PFQueryTable tableview
override init!(style: UITableViewStyle, className: String!) {
    super.init(style: style, className: className)
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    // Configure the PFQueryTableView
    self.parseClassName = "Unterkategorien"

}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject) -> PFTableViewCell {


    var cell = tableView.dequeueReusableCellWithIdentifier("UnterkategorienTableCell") as UnterkategorienTableCell!
    if cell == nil {
        cell = UnterkategorienTableCell(style: UITableViewCellStyle.Default, reuseIdentifier: "UnterkategorienTableCell")
    }

    if let objecti = aktuellesObject?{

        // Extract values from the PFObject to display in the table cell
        cell.unterkategorienName.text = object["name"] as String!
        //println(object["name"].objectId)

        var thumbnail = object["bild"] as PFFile
        var initialThumbnail = UIImage(named: "Kategorien")
        cell.unterkategorienBild.image = initialThumbnail
        cell.unterkategorienBild.file = thumbnail
        cell.unterkategorienBild.loadInBackground()
    }

    return cell
}

}

1 个答案:

答案 0 :(得分:0)

为什么不创建在名为queryForTable()的main(KategorienTableViewController)中创建的void? 但是你需要通过prepareForSegue(你已经做过的)传递的当前类别,但是你需要传递Category而不是子类别。

它看起来像这样:

KategorienTableViewController:

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

    // Get the new view controller using [segue destinationViewController].
    var unterkategorienScene = segue.destinationViewController as UnterkategorienTableViewController

    // Pass the selected object to the unterkategorien view controller.
    if let indexPath = self.tableView.indexPathForSelectedRow() {
        let row = Int(indexPath.row)
        unterkategorienScene.aktuellesObject = objects[row] as? PFObject
        //println(unterkategorienScene.aktuellesObject)
    }
}

UnterkategorienTableViewController:

override func queryForTable() -> PFQuery! {
    var query = PFQuery(className: self.parseClassName)
    query.whereKey("category", equalTo: aktuellesObject)
    return query
}

PS。 Wie ich sehe sprichst du Deutsch,probier nicht Deutsch undEnglischwährenddemProgrammieren zu vermischen dassorgtfürChaos。