首页 > 解决方案 > @EnvironmentObject Initializer 'init(_:)' 要求 'Binding' 符合 'StringProtocol'

问题描述

我有一个 EnvironmentObject 我想用作我的按钮标题的数据源:

struct ContentView: View {

    @State var showDetailsView = false
    @EnvironmentObject var storage: Storage

    var body: some View {

        NavigationView {
            ZStack {
                Button(action: {
                    self.doSomethingAsync()
                }) {
                    Text($storage.buttonTitle) // won't compile here

在此处输入图像描述

这是我的存储对象:

class Storage: ObservableObject {
    @Published var buttonTitle: String
    @Published var dataObject: DataObject
    init(dataObject: DataObject = DataObject(name: "Test")) {
        self.dataObject = dataObject
        buttonTitle = "Try"
    }
}

标签: swiftswiftui

解决方案


Text接受 a Stringnot a Binding<String>。将您指出的行替换为以下内容:

Text(storage.buttonTitle)

推荐阅读