SwiftUI - 将环境对象传递给视图

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

我的目标是将“

Session
”对象传递给视图,以便我可以访问其内容。目前,我将
session
实例作为
environmentObject
传递给
TabView
,以便所有选项卡都可以访问此会话。

这是我的课程:

class Session: ObservableObject {
    let auth = Auth.auth()

    @Published var signedIn = false
    
    var isSignedIn: Bool {
        return auth.currentUser != nil
    }
}

在我的应用程序结构中,我有

TabView
并将
session
放在
environmentObject
修饰符中:

struct app: App {

    @StateObject var session = Session()

    TabView {
        // Tabs redacted for easy viewing
    }
    .environmentObject(session)
}

最后是一个视图,我希望在以下位置使用这个

session
环境对象:

struct NewListView: View {
    @EnvironmentObject var session: Session

    var body: some View {
        HStack {
            Text(session.$signedIn)
        }
    }
}

我期待这能起作用。 相反,我收到此错误:

初始化程序“init(_:)”要求“Published.Publisher”符合“StringProtocol”

我对环境变量的理解是否错误?

swiftui swiftui-environment property-wrapper
1个回答
0
投票

删除$

struct NewListView: View {
    @EnvironmentObject var session: Session

    var body: some View {
        HStack {
            Text("\(session.signedIn)")
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.