Когда я переопределить func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
, я получаю контроллер представления назначения черезподклассов в раскадровке
let viewController = segue.destinationViewController as! VehicleDetailViewController
прекрасно работает до сих пор.
Но как я могу подставить VehicleDetailViewController
с некоторым подклассом SomeDetailViewController
, т.е. 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 вместо объектов? –
Речь идет не о коммутационном футляре (он отлично работает), проблема в том, что это отличная от 'VehicleDetailViewController' его подкласс' CarDetailViewController'. –
может отправить код, связанный с ошибкой? i.e код с CarSensorDetailViewController –