ios - PrepareForSegue is not being called when I did select a tableViewCell in SplitViewController's Master View -
i using tableviewcontroller master view of splitviewcontroller. looks right don't understand why prepareforsegue() not being called when click on row?
can force calling performseguewithidentifier() on tableview.didselectrowatindexpath.
guess should not need while using splitviewcontroller.
1 more thing, did not change in appdelegate.
could reason tableviewcontroller not being recognized masterview of splitviewcontroller?
here how tableviewcontroller looks like:
class masterviewcontroller: uitableviewcontroller { var links = [sidebarlink]() override func viewdidload() { super.viewdidload() self.links.append(sidebarlink(label: "home", url: "http://google.com")) self.links.append(sidebarlink(label: "contact", url: "http://google.com")) } override func didreceivememorywarning() { super.didreceivememorywarning() } // mark: - table view data source override func numberofsectionsintableview(tableview: uitableview) -> int { return 1 } override func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int { return 2 } override func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell { let cell = tableview.dequeuereusablecellwithidentifier("item", forindexpath: indexpath) let link = self.links[indexpath.row] cell.textlabel?.text = link.label return cell } override func tableview(tableview: uitableview, diddeselectrowatindexpath indexpath: nsindexpath) { tableview.deselectrowatindexpath(indexpath, animated: true) } // mark: - navigation // in storyboard-based application, want little preparation before navigation override func prepareforsegue(segue: uistoryboardsegue, sender: anyobject?) { if let indexpath = tableview.indexpathforselectedrow { if indexpath == 0 && segue.identifier == "showhome" { let destination = segue.destinationviewcontroller as! homeviewcontroller destination.name.text = "home" } if indexpath == 1 && segue.identifier == "showcontact" { let destination = segue.destinationviewcontroller as! homeviewcontroller destination.name.text = "contact" } } } }
when selecting row on master view controller of split view controller there no animated segue because detail view visible.
however, examining plain vanilla xcode template, notice there "showdetail" segue. 1 should called, , prepareforsegue.
make sure hooked correctly in storyboard. in storyboard, segue type should set "show detail (e.g. replace)".
Comments
Post a Comment