![](/img/trans.png)
[英]How do I get a variable from a "higher view" into a "ower view" in SwiftUI?
[英]How do I change a variable from inside a SwiftUI view?
我正在嘗試檢測 SwiftUI ForEach
是否返回任何內容:
struct FullListView: View {
@EnvironmentObject private var runningData: RunningData
@ObservedObject private var Categories = CategoriesStruct()
private var showNoContentMessage = true
var body: some View {
NavigationView {
VStack {
Form {
Section {
Toggle(isOn: self.$runningData.showSavedOnly){
Text ("Show Saved Only")
}
FilterOptionsView(Categories: Categories)
}
Section {
ForEach (ConditionsList) { ConditionInfo in
if (!self.runningData.showSavedOnly || ConditionInfo.isSaved) && (self.Categories.dict[ConditionInfo.category]! || self.Categories.allCategoriesFalse) {
showNoContentMessage = false
ListElementView(ConditionInfo: ConditionInfo, isItSaved: ConditionInfo.isSaved)
}
}
if self.showNoContentMessage {
Text("No matching conditions")
}
}
}
.navigationBarTitle(Text("Conditions"))
}
}
}
}
在ForEach
部分中,if 語句檢查是否為來自ConditionsList
的特定ConditionInfo
信息結構顯示ListElementView
。 如果沒有顯示ListElementView
視圖,我正在嘗試讓程序顯示Text(“No matching conditions”)
。 我試圖通過將showNoContentMessage
變量默認為true
來做到這一點,但如果if (.self.runngingData...
語句返回 true 則將其更改為false
。但是,每當我嘗試添加self.showNoContentMessage = false
或上述 if 語句中的showNoContentMessage = false
我收到錯誤: The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions
。如何從 if 中編輯此變量聲明,還是有更好的方法來查看是否顯示了任何ListElementView
視圖。我嘗試使用函數,將showNoContentMessage
變量傳遞到ListElementView
並在其中編輯它,然后使用.onAppear()
,它們要么都不起作用,要么給了我不同的錯誤信息。
改變
private var showNoContentMessage = true
至
@State private var showNoContentMessage = true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.