2017-07-18 53 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

相关问题