我尝试将数据从@environmentObject传递到TopLevel中的@State对象
struct ContentView: View {
@EnvironmentObject var countRecognizer: themeCounter
@State var theme: themeModel = themeData[countRecognizer.themeCount]
@State var hideBar = true
var body: some View {
ZStack {
videoCard(theme: theme)
.statusBar(hidden: true)
Text("\(self.countRecognizer.themeCount)")
if hideBar == true {
}
}
但是我收到此错误:“无法在属性初始化程序中使用实例成员;属性初始化程序在'self'可用之前运行”
themeData数组应该从环境Object中获取Int。
如何解决此问题?
答案 0 :(得分:1)
做你的
theme: themeModel = themeData[countRecognizer.themeCount]
在
.onAppear(...)
答案 1 :(得分:0)
您不能直接从另一个属性的初始值使用countRecognizer
,而且没有简单的解决方法。
我建议您考虑将@State var theme
属性重构为@Published var theme
ObservableObject内部的themeCounter
。 Apple教程将帮助您:https://developer.apple.com/tutorials/swiftui/tutorials
顺便说一句:不要用小写字母命名类型。
themeModel
应该是ThemeModel
themeCounter
应该是ThemeCounter
videoCard
应该是VideoCard