【问题标题】:@EnvironmentObject Initializer 'init(_:)' requires that 'Binding<String>' conform to 'StringProtocol'@EnvironmentObject Initializer 'init(_:)' 要求 'Binding<String>' 符合 'StringProtocol'
【发布时间】:2020-08-10 04:47:42
【问题描述】:

我有一个 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"
    }
}

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

    Text 接受 String 而不是 Binding&lt;String&gt;。将您指出的行替换为以下内容:

    Text(storage.buttonTitle)
    

    【讨论】:

      猜你喜欢
      • 2021-02-10
      • 2020-01-23
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 2020-05-20
      • 1970-01-01
      • 2020-10-12
      相关资源
      最近更新 更多