gpt4 book ai didi

swift - 谁的 View 仅在首次启动时不在窗口层次结构中

转载 作者:行者123 更新时间:2023-11-28 05:39:35 25 4
gpt4 key购买 nike

我有一个新用户首次打开应用程序时向他们展示的入门屏幕。在我的 appDelegate 中,我检查是否是第一次启动。

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

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

let storyboard = UIStoryboard(name: "Main", bundle: nil)
var initialViewController = storyboard.instantiateViewController(withIdentifier: "OnBoarding")


let userDefaults = UserDefaults.standard

if userDefaults.bool(forKey: "onBoardingComplete") {
initialViewController = storyboard.instantiateViewController(withIdentifier: "MainApp")

}
window?.rootViewController = initialViewController
window?.makeKeyAndVisible()
}

我还有一个 collectionViewCell,我有一些按钮,当我点击它们时,我会收到一个带有信息的警报。

一键示例

@IBAction func guide3Btn(_ sender: Any) {
let infoVC = infoService.info(title: "Title", body: "Information")

self.window?.rootViewController?.present(infoVC, animated: true, completion: nil)

}

当用户第一次启动应用程序时,如果他点击信息按钮得到这个:

Warning: Attempt to present <MyApp.InfoViewController:      0x7f91db45cfb0> on <MyApp.OnbBoardViewController: 0x7f91db506af0> whose view is not in the window hierarchy!

如果用户重新打开应用程序,一切正常。我知道当我们第一次启动时,我们将 onBoarding 作为根 Controller ,但我不明白如何解决这个问题。

更新

这是 infoService 类。我使用新的 Storyboard来创建警报。

class InfoService {

func info(title: String, body: String) -> InfoViewController {
let storyboard = UIStoryboard(name: "InfoStoryboard", bundle: .main)

let infoVC = storyboard.instantiateViewController(withIdentifier: "InfoVC") as! InfoViewController

infoVC.infoBody = body
infoVC.infoTitle = title

return infoVC
}
}

最佳答案

您可以尝试使用 DispatchQueue.main.async 将 Storyboard实例化代码块添加到主线程,如下所示:

我解决了几乎所有的 whose view is not in the window hierarchy! 问题。

DispatchQueue.main.async {
let infoVC = storyboard.instantiateViewController(withIdentifier: "InfoVC") as! InfoViewController

infoVC.infoBody = body
infoVC.infoTitle = title
}
return infoVC

引用自:https://stackoverflow.com/a/45126338/4442254

关于swift - 谁的 View 仅在首次启动时不在窗口层次结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57322053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com