当我覆盖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 :(得分:2)
segue实例化特定的类。如果你想要多个SomeDetailViewController
的子类,那么你需要在Storyboard中布局多个viewControllers并创建多个segues。
你可以通过 control -dragging从viewController顶部的 viewController 图标到每个作为SomeDetailViewController
子类的viewController。然后在segue中添加标识符,并使用performSegueWithIdentifier
中的didSelectRowAtIndexPath
进行调用。
另一种方法是为tableView创建多个原型单元格,每个单元格连接到它所特定的特定viewController。