我有一個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