是否可以在应用程序启动前检查 CoreData 值并根据 SwiftUI 项目中的值显示视图?

问题描述 投票:0回答:0

我正在使用的应用程序有两个视图,登录视图和主页视图。当应用程序首次启动时,它会从登录视图开始。用户必须使用名称和 ID 进行注册,然后单击下一步按钮,这会将用户导航到主页视图。当用户使用名称和 ID 注册时,数据将保存到

CoreData
中。 用户注册后,下次用户启动应用程序时,我希望应用程序以主视图启动。

import SwiftUI

@main
struct BJITXpressApp: App {
    let persistenceController = PersistenceController.shared

    var body: some Scene {
        WindowGroup {
            LoginView()
                .environment(\.managedObjectContext, persistenceController.container.viewContext)
        }
    }
}

在应用程序启动时,应用程序将检查

CoreData
的注册数据,如果找到数据,应用程序将从 Home View 启动。

我在登录视图上尝试了以下策略

.onAppear

struct LoginView: View {
    @Environment(\.managedObjectContext) var context
    @State private var name: String = ""
    @State private var employeeId: String = ""
    @State var isShowingHomeView = false
    
    var body: some View {
        NavigationView{...}
        .onAppear{
            checkFirstUse()
        }
        .fullScreenCover(isPresented: $isShowingHomeView){
            HomeView()
        }

但是通过这种方式,应用程序首先从登录视图开始,然后如果它在

Coredata
中找到数据,则导航到 HomeView。 而不是 Starts -> LoginView -> Check CoreData -> Home View ,我想要它像 Starts -> Check CoreData -> HomeView

ios swiftui core-data
© www.soinside.com 2019 - 2024. All rights reserved.