我有一个显示项目表的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
}
提前致谢!