ios - SIGABRT signal with DetailViewController -
this question has answer here:
i extremely new @ swift , still figuring out swift/objective-c syntax , libraries. trying recreate simple list of pictures can view on different image view. below code , error message, please guide me in right direction.
import uikit
class masterviewcontroller: uitableviewcontroller { var detailviewcontroller: detailviewcontroller? = nil var objects = [anyobject]() override func awakefromnib() { super.awakefromnib() if uidevice.currentdevice().userinterfaceidiom == .pad { self.clearsselectiononviewwillappear = false self.preferredcontentsize = cgsize(width: 320.0, height: 600.0) } } override func viewdidload() { super.viewdidload() let fm = nsfilemanager.defaultmanager() let path = nsbundle.mainbundle().resourcepath! let items = fm.contentsofdirectoryatpath(path, error: nil) item in items as! [string] { if item.hasprefix("img_") { objects.append(item) } } } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. } // mark: - segues override func prepareforsegue(segue: uistoryboardsegue, sender: anyobject?) { if segue.identifier == "showdetail" { if let indexpath = self.tableview.indexpathforselectedrow() { let detailviewcontroller = segue.destinationviewcontroller as! detailviewcontroller detailviewcontroller.detailitem = objects[indexpath.row] as? string } } } // mark: - table view override func numberofsectionsintableview(tableview: uitableview) -> int { return 1 } override func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int { return objects.count } override func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell { let cell = tableview.dequeuereusablecellwithidentifier("cell", forindexpath: indexpath) as! uitableviewcell let object: (anyobject) = objects[indexpath.row] cell.textlabel!.text = object as? string return cell } } i getting error in block of code specifically:
override func prepareforsegue(segue: uistoryboardsegue, sender: anyobject?) { if segue.identifier == "showdetail" { if let indexpath = self.tableview.indexpathforselectedrow() { let detailviewcontroller = segue.destinationviewcontroller as! detailviewcontroller detailviewcontroller.detailitem = objects[indexpath.row] as? string } } } the error message in console comes as:
could not cast value of type 'uinavigationcontroller' (0x10a979698) 'project1.detailviewcontroller' (0x1090f27a0).
replace this:
let detailviewcontroller = segue.destinationviewcontroller as! detailviewcontroller with this:
let nav = segue.destinationviewcontroller uinavigationcontroller let detailviewcontroller = nav.topviewcontroller as! detailviewcontroller solution modified from: destinationviewcontroller segue , uinavigationcontroller swift
Comments
Post a Comment