gpt4 book ai didi

ios - SWIFT 中的 ParseUI PFQueryTableViewController

转载 作者:行者123 更新时间:2023-12-01 16:33:43 25 4
gpt4 key购买 nike

我正在尝试连续使用两个 PFQueryTableViewController,以便在第一个 Controller 中选择的行生成带有详细查询的第二个 TableView 。我认为这是很常见的事情。

第二个 View Controller 抛出此消息:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "EQR-J7-VNh-view-gYk-IB-w7b" nib but didn't get a UITableView.'



我在第一个表中的单元格和新 View Controller 之间定义了一个“显示”segue,但是当它发生时,会出现上述消息并且第二个 Controller 永远不会被调用。如果我将第二个 Controller 类更改为常规 UIViewController,一切正常。

我的印象是我需要将 PFQueryTableViewController 重铸为 .nib 中的 UIViewController,但我不知道如何做到这一点,也不知道为什么 Parse 将它定义为其他东西。任何人都可以启发我。我是从 Swift 的角度来看的,我认为基于 Storyboard的 UI 会逃脱。

这是代码:

目标(第二个) View Controller :
import Parse
import UIKit
import ParseUI


class ClubDetailsViewController: PFQueryTableViewController {

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 = "USACourses"
self.textKey = "course_name"
self.pullToRefreshEnabled = true
self.paginationEnabled = false
self.objectsPerPage = 10
}



@IBOutlet weak var detailClubName: UILabel!
@IBOutlet weak var detailAddress: UILabel!
@IBOutlet ...

第一 View Controller :
import UIKit
import Parse
import ParseUI


class ClubTableViewController: 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 = "USAClubs"
self.textKey = "club_name"
self.pullToRefreshEnabled = true
self.paginationEnabled = true
self.objectsPerPage = 20
}

override func queryForTable() -> PFQuery {
var query = PFQuery(className: "USAClubs")
query.orderByAscending("club_name")
return query
}

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

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

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

return cell
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var detailScene = segue.destinationViewController as! ClubDetailsViewController

// Pass the selected object to the destination view controller.
if let indexPath = self.tableView.indexPathForSelectedRow() {
let row = Int(indexPath.row)
detailScene.currentClubObject = (objects?[row] as! PFObject)
}
}

override func viewDidAppear(animated: Bool) {

// Refresh the table to ensure any data changes are displayed
tableView.reloadData()
} // end view did appear
}

最佳答案

确保您设置为 ClubDetailsViewController 的 ViewController 是 UITableViewController 而不是 UIViewController。

PFQueryTableViewController 是 UITableViewController 的子类,而 UITableViewController 又是 UIViewController 的子类。为了让您的 ViewController 符合 UITableViewController,它需要遵循某些规则,例如拥有 UITableView 而没有其他 subview 。当您将 UITableViewController 拖到 Storyboard 上时,它会确保它遵循所需的规则。

关于ios - SWIFT 中的 ParseUI PFQueryTableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30174965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com