如何从故事板以编程方式实例化 UITabBarController?

jed*_*chi 0 swift

我有一个包含 TabBarController 场景的故事板。我试图以编程方式实例化它,然后将其设置为 rootViewController。

我在设置故事板变量后放置了一个断点,并且可以确认它找到了它。问题发生在为 TabBarController 加载场景。

我尝试创建一个自定义 TabBarController 子类并将其设置为身份检查器中的“类”名称,我得到了同样的结果。

我还尝试在同一个故事板中实例化 UIViewControllers,它们打开得很好。它只是发生在 TabBarController 上。也许这是一个限制,无法做到。

@IBAction func loginButtonTapped(_ sender: UIButton) {
        let storyboard = UIStoryboard(name: StoryboardConstants.Composition, bundle: nil)
        if let vc = storyboard.instantiateViewController(withIdentifier: "Tabbar") as? UITabBarController {
            UIApplication.shared.keyWindow?.rootViewController = vc
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误: * 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法为标识符“Tabbar”加载场景视图控制器 *首先抛出调用堆栈:

jed*_*chi 5

没有名字的故事板参考

终于让它工作了!所以我在身份检查器中正确设置了所有内容,问题是我没有将 Storyboard 分配给我链接到 TabBarController 的 Storyboard 引用。

该错误没有给我任何线索,但希望这会对某人有所帮助。