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

問題

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

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

可以很容易的生成BaseViewController實(shí)例。

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

解決方法

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

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

好了,問題解決了。

最后

我的微博 @云峰筆記 簡(jiǎn)書 @陳云峰 多多關(guān)注,多提意見,互相學(xué)習(xí),互相進(jìn)步!

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

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

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