想象一下,我有一個BaseViewController。然後我有兩個場景,新建和編輯,其中兩個共享相同的用戶界面和大部分邏輯。所以我創建了類NewViewController和EditViewController,繼承了BaseViewController。問題來了,當我嘗試從故事板實例化「BaseViewController」,因爲我想指定哪個實現。從Storyboard投射到子類
if isEdit {
storyboard.instantiateViewControllerWithIdentifier("baseVCIdentifier") as! EditViewController
} else {
storyboard.instantiateViewControllerWithIdentifier("baseVCIdentifier") as! NewViewController
}
然後我得到一個錯誤: 無法投型 'Test.BaseViewController' 的值(0x10ee5e0f0)爲 'Test.EditViewController'(0x10ee5f000)。
我不想在故事板上同時擁有ViewController,因爲我不想重做相同的用戶界面2次。
從xib或storyboard加載類時,加載機制將創建文件中指示的類型的類。你不能通過魔法改變類的類型。你應該能夠將實例化的視圖控制器分配給一個子類型的變量,但是我不知道Swift是否足夠了解確切的知識,或者如何編寫演員。 – Avi
如果你可以它仍然不會工作,演員將是一個謊言 – Wain