我正试图通过prepareForSegue()将一个对象传递给另一个场景,
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的错误.
编辑错误
Could not cast value of type ‘XXX.DisplayViewController’
(0x1082dcd80) to ‘XXX.VehicleDetailsTableViewController’
(0x1082dc9a0). (lldb)
解决方法
你必须在故事板中给出一个标识符(说mySegue)
使用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中的任何单元格时被触发.如果不是,则故事板中提供的标识符名称必须与此处给出的不同.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。