当带有过滤器选项的 ForEach 在 Swiftui 中没有显示结果时,如何显示文本?
Posted
技术标签:
【中文标题】当带有过滤器选项的 ForEach 在 Swiftui 中没有显示结果时,如何显示文本?【英文标题】:How to show a text when ForEach with a filter option shows no result in Swiftui? 【发布时间】:2020-07-16 21:26:39 【问题描述】:我正在尝试解决以下问题。我创建了一个带有 ForEach 循环的“列表看起来像”列表。哪个工作得很好,只是不能解决一个问题。在最后一个 ForEach 循环中,如果数据库“值”中没有结果,我想以文本形式给出结果。因此,如果 ForEach 循环因为没有设置数据库而没有通过,那么我想给出一个 Text 结果,显示“0€”。
你有什么想法吗?
代码如下:
ForEach(categories.filter( (categories) -> Bool in
categories.inOrOutCategory_ID == 1 ), id: \.category_ID) categoryIndex in
Section(header: Text("\(categoryIndex.category)"))
ForEach(subCategories.filter( (subCategories) -> Bool in
subCategories.category_ID == categoryIndex.category_ID ), id: \.subCategory_ID)
subCategoryIndex in
HStack
Text("\(subCategoryIndex.subCategory)").padding(.leading)
Spacer()
ForEach(values.filter( (values) -> Bool in
values.subCategory_ID == subCategoryIndex.subCategory_ID && (values.month_ID == self.month && (values.year == self.year)) ), id: \.value_ID) valueIndex in
Text("\(String(format: "%.2f", valueIndex.value))€").padding(.trailing)
.padding(.leading)
非常感谢
【问题讨论】:
【参考方案1】:我今天遇到了同样的问题,解决方案是创建一个方法,该方法为真或假,手动检查过滤器的条件,然后有必要在 swiftUI 中创建视图,如果方法返回,则显示该视图例如,假(无结果),在您的视图中,您显示文本或任何您想要的内容,但没有结果
示例:
func searchResult() -> Bool
if searchText == ""
return true // ne s'affiche pas
for u in subscribers
if u.firstname.contains(searchText)
return true
if u.lastname.contains(searchText)
return true
return false // s'affiche
在你看来:
if !searchResult()
Text("test")
【讨论】:
以上是关于当带有过滤器选项的 ForEach 在 Swiftui 中没有显示结果时,如何显示文本?的主要内容,如果未能解决你的问题,请参考以下文章
当用户使用 swift 的核心数据点击索引 0 到 1 时,如何显示不同的照片过滤器选项?
过滤后的 didSelectRowAtIndexPath 索引路径 UISearchController - Swift