当我重写func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
,我通过子类在故事板
let viewController = segue.destinationViewController as! VehicleDetailViewController
做工精细至今得到目标视图控制器。
但是,我怎样才能用SomeDetailViewController
的某些子类替代VehicleDetailViewController
,例如, CarDetailViewController
或BikeDetailViewController
?
因此,代码(段),应该像
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 –