2017-07-18 52 views
1

我沒有使用main.storyboard,並且通過代碼創建所有內容,但是在我的應用程序代理中出現此代碼時出現此錯誤。我並沒有在所有的故事板上使用,但我仍然收到這個錯誤

Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?

var window: UIWindow? 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     let rootView = HomeCollectionViewController(collectionViewLayout: UICollectionViewFlowLayout()) 

     if let window = self.window { 
      window.rootViewController = rootView 
     } 

     return true 
    } 
+1

您是否將視圖控制器添加到故事板?即使你不想使用故事板,你也應該使用一個虛擬的視圖控制器,它指向你的課程 – ridvankucuk

+0

Yup剛剛嘗試過,它工作。 @ridvankucuk – joethemow

+0

@ridvankucuk如果做得對,那真的不需要。 – GoodSp33d

回答

1

如果你不使用你需要仍然能夠在項目文件中的一些配置,讓Xcode的知道故事板規劃。在目標 - >部署信息下,您可以看到主界面的設置,將其設置爲空白,然後不會在故事板中查找入口點。

enter image description here

而且,當你正在做的一切代碼,UIWindow實例需要進行實例化和可見它允許你開始呈現視圖控制器。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    let viewController = TestViewController() 

    self.window = UIWindow(frame: UIScreen.main.bounds) 
    self.window?.rootViewController = viewController 
    self.window?.makeKeyAndVisible() 

    return true 
} 
1

您可以直接刪除從您的.plist文件Main storyboard file base鑰匙,再次運行它。

此外,如果你是黑屏,你必須設置窗口self.window?.makeKeyAndVisible()像上面的答案。

+0

他沒有設置窗口,如果他這樣做,他可能會以黑屏結束。 – GoodSp33d

+0

是的,你是對的!感謝您的建議,但他清楚地問,「我沒有使用故事板全部,但我仍然得到這個錯誤」 –

+0

所以這是一個錯誤的解決方案,而不是黑屏。 –

0

在我的評論上方,添加一個答案。如果您現在正在使用一個虛擬的故事板,則應該將一個視圖控制器添加到UIStoryboard。如果你想刪除UIStoryboard,你仍然可以繼續沒有它。在stackoverflow中,它的回答是here

相關問題