overrIDe func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) { // Get the new vIEw controller using [segue destinationVIEwController]. var nextScene = segue.destinationVIEwController as! VehicleDetailstableVIEwController // Pass the selected object to the new vIEw controller. if let indexPath = self.tableVIEw.indexPathForSelectedRow() { let selectedVehicle = vehicles[indexPath.row] nextScene.currentVehicle = selectedVehicle } }
而且我有currentVehicle对象来捕捉这些对象.但是,当我尝试运行时,它会崩溃并且收到关于downcasting的错误.
编辑错误
解决方法 你必须在故事板中给出一个标识符(说mySegue)Could not cast value of type ‘XXX.displayVIEwController’
(0x1082dcd80) to ‘XXX.VehicleDetailstableVIEwController’
(0x1082dc9a0). (lldb)
使用XCode 7,swift 2.x
overrIDe func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?){....}
被调用为所有segues被称为形式您当前的UIVIEwController.所以识别者是区分不同的段落
然后使用这段代码:
overrIDe func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) { if segue.IDentifIEr == "mySegue" { var nextScene = segue.destinationVIEwController as! VehicleDetailstableVIEwController // Pass the selected object to the new vIEw controller. if let indexPath = self.tableVIEw.indexPathForSelectedRow { let selectedVehicle = vehicles[indexPath.row] nextScene.currentVehicle = selectedVehicle } }}
使用Xcode 8,swift 3.x
overrIDe func prepare(for segue: UIStoryboardSegue,sender: Any?) { if segue.IDentifIEr == "mySegue",let nextScene = segue.destination as? VehicleDetailstableVIEwController,let indexPath = self.tableVIEw.indexPathForSelectedRow { let selectedVehicle = vehicles[indexPath.row] nextScene.currentVehicle = selectedVehicle }}
在nextScene之后放置一个断点,看看它是否在单击tableVIEw中的任何单元格时被触发.如果不是,则故事板中提供的标识符名称必须与此处给出的不同.
总结以上是内存溢出为你收集整理的ios – 使用prepareForSegue Swift传递对象全部内容,希望文章能够帮你解决ios – 使用prepareForSegue Swift传递对象所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)