gpt4 book ai didi

ios - 在 SwiftUI 中更改 UIHostingController 的 Root View

转载 作者:行者123 更新时间:2023-12-04 10:59:48 29 4
gpt4 key购买 nike

对于新的 SwiftUI iOS 应用程序,我在 SceneDelegate 中执行以下操作

if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
if Auth().token == nil {
window.rootViewController = UIHostingController(rootView: StartRegistrationView())
} else {
window.rootViewController = UIHostingController(rootView: MainTabbedView())
}
self.window = window
window.makeKeyAndVisible()
}

当用户尚未注册或登录时,他们将进入注册流程。

用户注册后,如何将 RootView 切换到我的 TabView?我似乎无法使用 SwiftUI 找到任何解决方案.

我应该改用 Environment对象并监听用户的 Auth 的变化地位?

最佳答案

声明一个 AppRootView,如下所示:

struct AppRootView: View {

@ObservedObject private var auth: Auth
var body: some View {
Group {
if auth.token != nil {
MainTabbedView()
} else {
StartRegistrationView()
}
}
}
}

然后在 SceneDelegate 中将其设置为 Root View :
window.rootViewController = UIHostingController(rootView: AppRootView(auth: $auth))
您必须将 View 绑定(bind)到您的 Auth() ,方法是像我上面所做的那样传递它,或者在您的环境中设置它。 SwiftUI 的美妙之处在于,只要 token 不为零, View 就会重绘,您的用户会在 MainTabbedView 中找到它们自己。

关于ios - 在 SwiftUI 中更改 UIHostingController 的 Root View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58104813/

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