在Swift 中 ViewController 默認構造方法不關聯同名的xib文件
在使用OC的時候,調用ViewController的默認構造函數,會自動關聯到一個與ViewController名字相同的xib文件上,
這樣無疑方便了開發者,減少了代碼量。但不知道為什么,在swift中,新建ViewController實例,不在默認關聯xib,
一定要開發者指定xib的名字,這對於有代碼潔癖的人是不可接受的,因為通常情況下,
xib的名字一定是和ViewController的名字相同的。
// Objective C中的寫法 TwoViewController *v = [[TwoViewController alloc] init]; //這樣會把TwoViewController默認關聯到TwoViewController.xib上 // 等同調用了方法 TwoViewController *v = [[TwoViewController alloc] initWithNibName:@"TwoViewController" bundle:nil]; // Swift中的寫法 let v = TwoViewController() //不會關聯TwoViewController.xib文件 // 一定要指定xib文件 let v = TwoViewController(nibName: "TwoViewController", bundle: nil) // 我們改怎樣讓TwoViewController()去找同名字的xib文件呢, // 其實原來很簡單,重寫init方法就行了, // 新建BaseViewController.swift 重寫init方法, // 其他的ViewController繼續於BaseViewController。 override init() { // 獲取當前Class的名字,在swift中class名字前會加入Module名字,所以這里以'.'划分,取'.'后面的字符串. super.init(nibName: (self.classForCoder.description() as NSString).componentsSeparatedByString(".")[1] as NSString, bundle: NSBundle.mainBundle()) } required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) }