我有一个ViewController(BViewController
),它是继承自另一个UIViewController
子类(AViewController
)。 (我想这样做的原因是,我重新使用故事板3次以上的不同的屏幕相同的看法。)Swift3:投射UIViewController子类失败
当我打电话:
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "AViewController") as! BViewController
self.show(vc, sender: self)
我得到这个错误:
Could not cast value of type 'test.AViewController' (0x10d08b478) to 'test.BViewController' (0x10d08b3f0).
这里是我的子类,它们没有任何内容。
class AViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
-
class BViewController: AViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
在故事板类,因为我想分享所有的孩子IBOutlets
而无需重新创建视图设置为AViewController
。我的UIStoryboard
中只有一个View Controller Scene
。
如果你设置了类'AViewController'情节板中的你不能投你的视图控制器'BViewController'(AViewController'的'子类或不)。 – albertamg
B是A,但A不是B,这意味着您可以将B投射到A,但不投A到B. – Mercurial
我取消设置类,现在我得到:无法将'UIViewController'类型的值(0x10260c718)转换为' test.BViewController'(0x1009bf3f0)。 – arooo