新建一個帶viewController的iOS App項目中UIWindow默認是編譯器自動創(chuàng)建的,并且還把self.window.rootViewController設置為項目自帶的ViewController,那么,問題來了:如果想要把一個UITabBarController設置為rootViewController,那該怎么辦呢?
我們一般會刪除默認的ViewController,然后自己設置self.window.rootViewController = MYTabBarController(自定義的UITabBarController);這時,運行項目,我們會看到控制臺輸出一警告:" Unknown class ViewController in Interface Builder file ",因為項目已經跑起來了,所以一般就沒人關心這句警告了,作為強迫癥的我,想把這句警告去掉,該怎么辦呢?
首先,我們要弄明白自動創(chuàng)建self.window.rootViewControlle的原理.要想弄明白這個問題,我們首先來看下Main.Storyboard的相關知識.
在TARGETS的general - Development info - Main interface選項,默認是Main,它的意思是:項目啟動時首先運行Main.Storyboard,打開Main.Storyboard,我們看到它的View controller scene 是類型是ViewController,而且右邊的is Initial View Controller 選項也打上勾了,這是指,在Main.Storyboard內部初始化了一個視圖控制器,名字就叫ViewController.
現(xiàn)在,我們已經明白了:項目先運行Main.Storyboard,在Main.Storyboard內部初始化了一個試圖控制器,名字就叫ViewController.那么,這個ViewController到底是怎樣加在self.window.rootViewControlle的呢?重點來了,這個過程編譯器自動幫我們實現(xiàn)的,在didFinishLaunchingWithOptions方法中,編譯器自動創(chuàng)建的UIWindow,并設置self.window.rootViewControlle = ViewController;
那么,最后怎樣刪除Unknown class ViewController in Interface Builder file警告呢?
1 刪除Main.Storyboard
2 刪掉格式文件Info.plist中對應的鍵值术唬,即刪掉Main storyboard file base name...main
3 在didFinishLaunchingWithOptions里面手動創(chuàng)建self.window= [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];