文章寫于2016年9月底,Xcode 8,swift 3.0
真是蛋疼,折騰了很長時間,試了網上很多教程,結果又莫名的可以了!
1.方法和OC中一樣
將一個xib文件和一個ViewController類進行關聯的幾步操作:
command + n
創建
一個新的文件,選擇 User Interface - View 或者 Empty。如果選擇的是 Empty 就需要在xib文件中,自己創建一個View。
將xib文件和ViewController類進行
綁定
,點擊左上角的 File's Owner,在右邊的選項的中的第三個選項卡的第一個欄目中寫入需要綁定的類名。將xib中的view和self.view進行
關聯
,按住control 從File's Owner連線到view。
或者
?在創建ViewController文件時,可以選擇直接創建一個關聯完畢的xib文件。默認已經幫你完成上面幾步。
注:?當一個視圖控制器類,有相關聯的xib文件時(文件名相同),在執行內部loadView方法時,會自動的去讀取xib
,所以這樣就能實現了。
說明:以上方法和OC中完全一樣,在swift項目中也一樣可以實現。但是我第一次弄的時候莫名的出現問題,現在測試可以使用。網上的內容說還需要以下部分才能實現,個人測試以下的內容也需要在xib文件綁定和關聯之后才可用。(個人覺得沒必要,特定環境下需要以下內容)
2.在該類中復寫 init
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}convenience init() {var nibNameOrNil = String?("ViewController")//這里根據自己xib名//考慮到xib文件可能不存在或被刪,故加入判斷if Bundle.main.path(forResource: nibNameOrNil, ofType: "xib") == nil {nibNameOrNil = nil}self.init(nibName: nibNameOrNil, bundle: Bundle.main)
}required init(coder aDecoder: NSCoder) {fatalError("init(coder:) has not been implemented")
}