如何使用Parse与Swift重新加载PFTableViewController?

时间:2015-09-10 04:23:12

标签: ios swift parse-platform

我有一个显示项目表的PFTableViewController。然后我转向带有根视图控制器的导航控制器,允许用户输入一个新项目 - 在他们按下保存后,我关闭视图控制器并返回到PFTableViewController。

我想在此时重新加载PFTableViewController - 以便其列表包含用户刚刚添加的项目。目前我试图让它重新加载是不行的;用户必须拉到刷新的状态 - 感觉添加的项目没有正确保存,因为它不会自动显示。

我把self.tableView.reloadData()放在viewDidLoad()函数中 - 当我添加一个println来验证它是否在新项目视图被解除时触发它时,它会明显触发。但该表没有重新加载数据。

这是我尝试过的代码的一个版本:

override func viewDidAppear(animated: Bool) {
    println("going to reload")

    self.tableView.reloadData()
}

另一个,基于我看到的另一个例子:

override func viewDidAppear(animated: Bool) {
    println("going to reload")

    dispatch_async(dispatch_get_main_queue(), { () -> Void in
        self.tableView.reloadData()
    })
}

两者都没有。

以下是PFTableViewController文件设置的大部分内容,以防它也很有用:

import UIKit
import Parse
import ParseUI

class CategoryViewController: PFQueryTableViewController {
    var currentObject : PFObject?
    var candidates: Array<AnyObject>?

    override init(style: UITableViewStyle, className: String!) {
        super.init(style: style, className: className)
    }

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

        self.parseClassName = "CategoryCandidates"
        self.textKey = "candidateTitle"
        self.pullToRefreshEnabled = true
        self.paginationEnabled = false
    }

    override func queryForTable() -> PFQuery {
        var query = PFQuery(className: "CategoryCandidates")
        query.whereKey("categoryID", equalTo: currentObject!)
        query.orderByDescending("votes")
        return query
    }

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

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

        cell?.voteButton.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)


        // Extract values from the PFObject to display in the table cell
        if let candidateTitle = object?["candidateTitle"] as? String {
            cell?.textLabel?.text = candidateTitle
        }

        if let votesTotal = object?["votes"] as? Int {
            if votesTotal > 1 {
                cell?.votesLabel.text = "\(votesTotal.description) votes"
            } else if votesTotal == 1 {
                cell?.votesLabel.text = "\(votesTotal.description) vote"
            }
        }

        cell.voteButton.tag = indexPath.row

        return cell
    }

提前致谢!

0 个答案:

没有答案