【问题标题】:Failed to instantiate view controller. - Swift无法实例化视图控制器。 - 斯威夫特
【发布时间】:2020-05-27 06:18:30
【问题描述】:

所以,我正在尝试使用情节提要引用以编程方式实例化我的视图控制器。

我已将此代码放在 AppDelegate 中:

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    window = UIWindow(frame: UIScreen.main.bounds)

    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let initialController: WelcomePageViewController = mainStoryboard.instantiateViewController(withIdentifier: "WelcomePageViewController") as! UITabBarController
        window?.rootViewController = initialController        
    window?.makeKeyAndVisible()
    return true
}

并将其设置在我的视图控制器的故事板中:

但是,当我运行应用程序时,只显示黑屏并显示以下消息: “无法为 UIMainStoryboardFile 'Main' 实例化默认视图控制器 - 可能未设置指定的入口点?”

我已经在其他应用程序中使用过这个确切的代码,它工作得很好。

我尝试清理构建文件夹,在实际设备上运行它并创建和实例化不同的故事板文件,但没有任何效果。

【问题讨论】:

  • 你也有SceneDelegate吗?
  • @Sweeper 是的,有一个 SceneDelegate。但是我还没有实现它的任何功能。该文件是默认的。
  • 您可以像这样以编程方式设置它 UITabBarController().viewControllers = [UIViewController()]。数组中的第一个视图控制器将是您的初始视图控制器
  • @umerfarooqi 仍然黑屏和错误:“无法为 UIMainStoryboardFile 'Main' 实例化默认视图控制器 - 可能未设置指定的入口点?”
  • @ShadiHabiballah -- "是的,有一个 SceneDelegate。" -- 你必须从 SceneDelegate.swift 执行此操作,不是 来自AppDelegate.swift。此外,请确保您已从项目设置的“主界面”字段/下拉列表中删除“主界面”。

标签: ios swift xcode storyboard


【解决方案1】:

好的,所以我认为如果适合,您可以这样做:

  • 设置导航控制器的入口点
  • 类导航控制器具有类似rootNavigationVC.swift 的文件,它是UINavigationController 的子类
  • 现在在didLoad() 中,您可以将其设置为viewController 或根据您的情况推送一个

相信我,它比在 AppDelegate.swift 中编码更好,这对我来说从来没有用过。

【讨论】:

    【解决方案2】:

    打开您的Main.storyboard 文件并找到WelcomePageViewController。选中后,转到属性检查器并选中标记为Is Initial View Controller 的框。

    您应该会看到WelcomePageViewController 左侧出现一个向右箭头,表明它是您故事板的入口点。

    现在你们都准备好了!!!

    【讨论】:

    • 我需要从 AppDelegate 以编程方式设置初始控制器。因为我需要根据布尔值选择哪个是初始视图控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2017-03-24
    • 1970-01-01
    • 2021-03-14
    相关资源
    最近更新 更多