ios - ParseUI PFQueryTableViewController in SWIFT -
i'm trying use 2 pfquerytableviewcontrollers in succession, row selected in first controller generates second tableview detailed query. assume common thing do.
the second view controller throws message:
*** terminating app due uncaught exception 'nsinternalinconsistencyexception', reason: '-[uitableviewcontroller loadview] loaded "eqr-j7-vnh-view-gyk-ib-w7b" nib didn't uitableview.'
i've got "show" segue defined between cell in first table , new view controller, when happens above message appears , second controller never gets called. if change second controller class regular uiviewcontroller, works fine.
i'm getting impression need recast pfquerytableviewcontroller uiviewcontroller in .nib, have no idea how or why parse defined else. can enlighten me. i'm coming swift perspective , thought away storyboard based ui.
here's code:
target (second) 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 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 ... first view controller:
import uikit import parse import parseui class clubtableviewcontroller: pfquerytableviewcontroller { // initialise pfquerytable tableview override init(style: uitableviewstyle, classname: string!) { super.init(style: style, classname: classname) } required init(coder adecoder: nscoder) { super.init(coder: adecoder) // configure 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 pfobject display in 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 selected object 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 table ensure data changes displayed tableview.reloaddata() } // end view did appear }
make sure viewcontroller setting clubdetailsviewcontroller uitableviewcontroller , not uiviewcontroller.
pfquerytableviewcontroller subclass of uitableviewcontroller in turn subclass of uiviewcontroller. viewcontroller conform uitableviewcontroller needs follow rules having uitableview , not having other subviews. when drag uitableviewcontroller onto storyboard makes sure follows needed rules.
Comments
Post a Comment