Swift -ios - 在 ViewDidLoad方法之前 xib 控件 未初始化問題

問題描述:
1.在ViewController 的xib 視圖中 拖了控件, 也關(guān)聯(lián)到了 VC.swift (ViewController.swift 以下簡(jiǎn)稱VC) 中,但是,出現(xiàn)在viewDidLoad 方法中未打印出來的控件是nil (未初始化) ----- ios 8.3 系統(tǒng) (測(cè)試機(jī)低版本系統(tǒng)只有這一個(gè))
ios 10.3.3

ios 8.3 系統(tǒng)版本問題產(chǎn)生的BUG:
本人自己使用的手機(jī)和 模擬器的版本都是 iOS 10+ 的,未出現(xiàn) 這個(gè)問題

在使用 xib 創(chuàng)建 swift VC 時(shí),需要加上這兩句代碼
一般這重寫放在 基類 VC 里面



class BaseViewController: UIViewController{
//一般這重寫放在 基類 VC 里面 
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: "\(type(of: self))", bundle: nil)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
...
}

其中 "(type(of: self))" 是打印出本身的類名
打印的結(jié)果就是

print("\(type(of: self))")
// "BaseViewController"

其實(shí)就是重寫 初始化nib 的方法 ,在OC 中想要顯示
結(jié)合xib 的VC 的話, 需要寫 initWithNibName: 的方法是一樣的, 類比! 類比!

PeopleViewController *vc = [[PeopleViewController alloc] initWithNibName:@"nibName" bundle:[NSBundle mainBundle]];

總結(jié):
1 .所有 swift 結(jié)合xib創(chuàng)建的 VC 必須加上 以上2句 代碼
2 . "(type(of: self))" 是打印出本身的類名 ,但是type(of: ) 的用法未深究,待研究...

記錄一下,如果哪里說錯(cuò)了,還請(qǐng)大牛指教,感激不盡.......

最后編輯于
?著作權(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)容