簡體   English   中英

如何從 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM