子類(Subclass)如何復用StoryBoard中的ViewController?

問題

我先定義了一個BaseViewController類,在StoryBoard中也畫了一個BaseViewController控制器。我用代碼

storyboard.instantiateViewController(withIdentifier: "BaseViewController") as! BaseViewController

可以很容易的生成BaseViewController實例。

但是我后來由于新的需求,又定義了SubClassViewController,繼承BaseViewController,我希望能夠復用StoryBoard中的視圖控制器,不用在StoryBoard中畫兩個一樣的控制器,這樣節(jié)省維護成本。如何解決呢?

解決方法

如果直接強制轉(zhuǎn)換是不可以的,Xcode會報錯,那要如何做到呢?
很簡單,使用Swift的動態(tài)特性,在生成BaseViewController實例后,做一次子類的轉(zhuǎn)換,就完成了!代碼如下:

let viewController = storyboard.instantiateViewController(withIdentifier: "BaseViewController") as! BaseViewController
object_setClass(viewController, SubClassViewController.self)
let subClassViewController = viewController as! SubClassViewController

好了,問題解決了。

最后

我的微博 @云峰筆記 簡書 @陳云峰 多多關(guān)注,多提意見,互相學習,互相進步!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容