EXC_BAD_ACCESS 使用 instantiateViewController 时

EXC_BAD_ACCESS when using instantiateViewController

我正在尝试执行主屏幕快速操作以打开特定的视图控制器,当我 运行 应用程序时,我在下面显示的行中收到 Thread 1: EXC_BAD_ACCESS (code=261, address=0xdac11530) 错误。有解决这个问题的想法吗?

func navigateToMoreDoggosVC() {
        
        let storyBoard = UIStoryboard.init(name: "Main", bundle: nil)
        let moreDoggosVC = storyBoard.instantiateViewController(withIdentifier: "moreDoggosViewController") //Thread 1: EXC_BAD_ACCESS (code=261, address=0x********)
        let navVC = self.window?.rootViewController as? UINavigationController
        
        navVC?.pushViewController(moreDoggosVC, animated: true)
        
    }

如果您需要更多信息,我很乐意编辑问题。

您无法在启动应用程序时推送视图控制器。 你需要设置一个rootViewController然后使它成为makeKeyAndVisible.

我们如何实现这一点,请参见下面的代码:

func navigateToMoreDoggosVC() {
    let storyBoard = UIStoryboard.init(name: "Main", bundle: nil)
    let moreDoggosVC = storyBoard.instantiateViewController(withIdentifier: "moreDoggosViewController")
    window?.rootViewController = UINavigationController(rootViewController: moreDoggosVC)
    window?.makeKeyAndVisible()
}

您需要在 SceneDelegate.swift 文件中添加此代码并从 willConnectTo 函数中调用它。