使用Xcode 11.2中的Storyboard以编程方式设置初始视图控制器

我试图以编程方式设置初始View控制器,但我一直收到此错误。有什么办法吗?

2019-11-07 11:47:43.975990+0000 RestaurantApp[16319:147412] [WindowScene] Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?

这是我编写的代码。

import UIKit

@UIApplicationmain
class AppDelegate: UIResponder,UIApplicationDelegate {


    let window = UIWindow()
    let locationService = LocationService()
    let storyboard = uistoryboard(name: "Main",bundle: nil) //refernce to our storyboard





    func application(_ application: UIApplication,didFinishlaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

        //setiing the root view control on our window
        switch locationService.status  {
        case .notDetermined,.denied,.restricted:
            let LocationViewController =
                storyboard.instantiateViewController (withIdentifier: "LocationViewController") as? LocationViewController
            LocationViewController?.locationService = locationService
                window.rootViewController = LocationViewController
        default:
            assertionFailure()
        }

        window.makeKeyAndVisible()

        return true
    }
}

这是我的故事板的图片

使用Xcode 11.2中的Storyboard以编程方式设置初始视图控制器

QQ170102852 回答:使用Xcode 11.2中的Storyboard以编程方式设置初始视图控制器

iOS 13已将窗口设置从AppDeleagte移至SceneDelegate,以支持使用(可能是多个)场景而不是单个窗口。现在,您必须像这样进行设置:

class SceneDelegate: UIResponder,UIWindowSceneDelegate {

   var window: UIWindow?
   let storyboard = UIStoryboard(name: "Main",bundle: nil)

   func scene(_ scene: UIScene,willConnectTo session: UISceneSession,options connectionOptions: UIScene.ConnectionOptions) {
      guard let windowScene = scene as? UIWindowScene else { return }
      let vc = storyboard.instantiateViewController (withIdentifier: "Primary") as! ViewController
      window = UIWindow(windowScene: windowScene)
      window?.rootViewController = vc
      window?.makeKeyAndVisible()
   }
,
func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
            let storyboard = UIStoryboard.init(name: "Main",bundle: nil)
     let homeView =  storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
     self.window?.rootViewController = homeView
    return true
}

这对我有用

,

此错误是由于您的故事板上的一个简单错误而引起的,并且很容易修复。当您的应用启动时,iOS需要准确地知道首先需要显示哪个视图控制器-称为默认视图控制器。

如果您不小心删除了该视图控制器,或者将其设置为非默认控制器,那么您将看到错误“无法为UIMainStoryboardFile'Main'实例化默认视图控制器-可能未设置指定的入口点?”应用启动时,以及纯黑屏幕。

要解决此问题,请打开Main.storyboard文件,并找到您希望在应用首次运行时显示的视图控制器。选中后,转到属性检查器,然后选中标记为“是初始视图控制器”的框。您应该会在该视图控制器的左侧看到一个向右的箭头,表明它是情节提要的入口点。

,

返回情节提要并checkmark,使您的应用开始使用viewController

Checkmark this

本文链接:https://www.f2er.com/3145117.html

大家都在问