Meh*_*met 19 xcode storyboard ios uistoryboard swift
我试图用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
}
}
Run Code Online (Sandbox Code Playgroud)
而且我有currentVehicle对象来捕获这些对象.但是,当我尝试运行时,它会破坏并获得有关向下转换的错误.
错误编辑
无法将"XXX.DisplayViewController"类型的值(0x1082dcd80)转换为"XXX.VehicleDetailsTableViewController"(0x1082dc9a0).(LLDB)
Raj*_*ram 50
你必须在故事板中给segue一个标识符.(比如说mySegue)
使用Xcode 10 swift 4.x(也适用于Xcode 9和8,swift 3.x)
override func prepare(for segue: UIStoryboardSegue, sender: Any?){}
Run Code Online (Sandbox Code Playgroud)
被称为从你当前调用的所有segues UIViewController.所以identifier是区分不同的segue
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
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是使用Xcode 7,请使用swift 2.x.
然后使用此代码:
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
之后放置一个断点,nextScene然后通过单击中的任何单元格来查看它是否被触发TableView.如果不是,那么故事板中提供的标识符名称必须与此处给出的标识符不同.
AnyObject 已重命名为 Any?
override func prepare(for segue: UIStoryboardSegue, sender: Any?){
let 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
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35914 次 |
| 最近记录: |