SwiftUI array.isEmpty 在从 Firestore 收到数组之前不显示

Posted

技术标签:

【中文标题】SwiftUI array.isEmpty 在从 Firestore 收到数组之前不显示【英文标题】:SwiftUI array.isEmpty do not show until received array from Firestore 【发布时间】:2020-12-19 02:19:05 【问题描述】:

当前有一个 VStack 填充来自 firestore 的项目,如果 db 中没有项目,我会尝试显示一条消息。它工作得很好,但是在加载项目列表之前,它会显示“无项目”消息。我知道它根本还没有从数据库中得到结果。有什么方法可以推迟显示任何内容,直到通话完成?

VStack(alignment: .leading)
if itemList.isEmpty 
    Text(“No items”)
 else 
    ForEach(itemList.indices, id: \.self)  i in
         Text(itemList[I].item)
        
    

.onAppear()  self.readItems() 

【问题讨论】:

【参考方案1】:

不,你可以保持渲染直到有数据;这可能需要很长时间。无论应用处于何种状态,您的代码都必须始终呈现某些内容。

但是您可以设置一个变量来表示数据是否已加载,例如isLoaded,最初将其设置为false,在完成处理程序中将其设置为true,然后使用它来确定要显示的内容.最常见的是,在这种情况下,您将显示单个文本视图 Loading...,然后在 isLoaded 为真后切换到您现在拥有的视图。

【讨论】:

以上是关于SwiftUI array.isEmpty 在从 Firestore 收到数组之前不显示的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中初始化嵌套结构

如何从结构视图数组中提取状态? SwiftUI

如何在 SwiftUI 中获取 MKMapView 方向

使用 swiftUI 中的按钮导航到新屏幕

SwiftUI+Firestore 中的多选列表

如何在 SwiftUI 中使视图的高度从 0 动画到高度?