【发布时间】:2016-02-29 16:36:59
【问题描述】:
当我覆盖 func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 时,我通过
let viewController = segue.destinationViewController as! VehicleDetailViewController
到目前为止工作正常。
但是我怎样才能用SomeDetailViewController 的某个子类替换VehicleDetailViewController,例如CarDetailViewController 或 BikeDetailViewController?
所以代码(sn-p)应该是这样的
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SegueID" {
let indexPath = tableView.indexPathForSelectedRow!
let vehicle = Vehicle[indexPath.row]
switch vehicle {
case is Car:
let viewController = segue.destinationViewController as! CarDetailViewController
case is Bike:
let viewController = segue.destinationViewController as! BikeDetailViewController
}
}
}
但 Xcode 告诉我不允许强制转换:
无法转换“SomeApp.VecicleDetailViewController”类型的值 (0x10ede2220) 到“SomeApp.CarSensorDetailViewController” (0x10ede2310)。
也欢迎对 Objective-C 的帮助,因为这个问题与语言无关。
【问题讨论】:
-
你为什么不尝试案例 0,案例 1 而不是对象?
-
这与 switch-case 无关(它工作正常),问题是从
VehicleDetailViewController转换为其子类CarDetailViewController。 -
你能贴出与错误相关的代码吗?即带有 CarSensorDetailViewController 的代码
-
是的,我确实添加了 Xcode 错误消息。
标签: objective-c swift storyboard segue uistoryboardsegue