swift - @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"
}
}
解决方案
Text
接受 a String
not a Binding<String>
。将您指出的行替换为以下内容:
Text(storage.buttonTitle)
推荐阅读
- twitter - 为什么 twitter 令牌会过期?
- java - 如何完全关闭您的应用程序?
- c# - 可迭代对象:减少为单个值
- anylogic - 代理在吸引子中移动
- reactjs - 将我捆绑在电子应用程序中的 react-app 发布到 github 版本
- python - mongodb 二进制正则表达式 pymongo
- sqlite - 在不使用 Pragma 的情况下查询 SQLite 表的列名和类型?
- flash - CefSharp 浏览器中的 Flash SWF 似乎没有注册双击事件
- r - 如何正确使用 gsub 替换字符串
- vba - Excel-VBA根据当前月份删除动态行范围