1 - 從storyboard 中加載控制器
有時(shí)候, 我們雖然是自己通過代碼來創(chuàng)建window, 但是有時(shí)候
我們還需要從我們的storyboard中加載, 所以
我們現(xiàn)在講的是如何從storyboard中加載控制器
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//1.創(chuàng)建窗口
window = UIWindow()
//2.設(shè)置窗口根控制器
//2.1從StoryBoard當(dāng)中加載控制器
let sb = UIStoryboard(name: "Main", bundle: nil)
//2.1.1加載StoryBoard中當(dāng)箭頭指向的控制器
//let vc = sb.instantiateInitialViewController()
//2.1.2加載StoryBoard當(dāng)中指定標(biāo)識的控制器
let vc = sb.instantiateViewControllerWithIdentifier("yellowVC")
window?.rootViewController = vc
//3.顯示窗口
window?.makeKeyAndVisible()
return true
}
我們的這個從storyboard中加載控制器
上面的的yellowVC是我們其中一個控制器的標(biāo)識
2 - 從Xib中加載控制器的View
2.1 - 首先, 我們先創(chuàng)建一個類, 充當(dāng)我們Xib的控制器(RootViewController)
2.2 - 其次, 我們需要創(chuàng)建Xib并在我們的Xib中進(jìn)行一些步驟.
當(dāng)然, 我們的Xib名稱先是One(后面, 我們將繼續(xù)創(chuàng)建Xib然后討論一個問題)
2.2 設(shè)置file owner類名
注意上面的三個紅框框, 必須選擇紅框框的按鈕, 并寫上相應(yīng)的類名
2.3 連線
如何連線, 將誰和誰相連???下面這張圖就是解釋了這個問題:
不連線的后果(系統(tǒng)會崩潰) 至于為什么要連這個線, 在后面, 會有解釋的
2.4 . 代碼加分析:
2.4.1 代碼
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//1.創(chuàng)建窗口
window = UIWindow(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.height, UIScreen.mainScreen().bounds.size.height))
//2.設(shè)置窗口根控制器.
//XMGViewController 的init方法, 會調(diào)用 init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?)方法
//nibName:如果指定為nil, 那么它會默認(rèn)加載跟它相同名稱的xib.
//如果沒有跟它相同名稱的控制器.那么它就會自動加載跟它相同名稱去掉controller的xib.
//如果都沒有,創(chuàng)建一個空的view.
let rootVC = XMGViewController(nibName: nil, bundle: nil)
window?.rootViewController = rootVC
//3.顯示窗口
window?.makeKeyAndVisible()
return true
}
上面我們說過, 我們會在后面繼續(xù)創(chuàng)建Xib的, 然后, 發(fā)現(xiàn)問題, 并解釋它
我們再創(chuàng)建一個Xib名稱叫`RootView` (其他步驟一樣)
2.4.2我們在這個方法中這樣寫
let rootVC = XMGViewController(nibName: nil, bundle: nil)
window?.rootViewController = rootVC
我們們會發(fā)現(xiàn)他會加載這個Xib
那我們繼續(xù)創(chuàng)建Xib名稱叫`RootViewcontroller` (其他步驟一樣)
他會加載哪一個Xib???
他會加載的是: 叫做: RootViewController的Xib
如果我們將這個Xib刪掉, 他會加載叫做: `RootView`的Xib
**2.4.3為什么: **
如果沒有指定加載Xib的名稱
他會先去加載跟它相同名稱的xib(RootViewController)
如果沒有相同名稱的Xib.再去加載去掉跟它相同名稱去掉Controller(RootView.xib)
如果也沒有,它會創(chuàng)建一個空的View.
而這個就是系統(tǒng)默認(rèn)的做法 ,同時(shí)這樣也說明了, 我們命名規(guī)范的重要性