@@ EnvironmentObject初始化程序'init(_ :)'要求'Binding'符合'StringProtocol'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@@ EnvironmentObject初始化程序'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

enter image description here

这是我的存储对象:

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

答案
Text(storage.buttonTitle)

以上是关于@@ EnvironmentObject初始化程序'init(_ :)'要求'Binding'符合'StringProtocol'的主要内容,如果未能解决你的问题,请参考以下文章

为什么@EnvironmentObject强制重新初始化视图?

如何从类而不是视图更改@EnvironmentObject

SwiftUI iOS 14 视图不使用 @EnvironmentObject 更新 @Published 数组

macOS 应用程序的 SwiftUI:关闭窗口并打开另一个窗口时的用户 @EnvironmentObject

EnvironmentObject 未通知订阅的视图的更改

SwiftUI - 如何使用 ObservedObject 或 EnvironmentObject 存储 GeometryReader 数据?