Swift UI 加载数据后显示子视图 - 避免数据未加载完成导致视图错误
在加载数据之后再加载子视图,可以避免数据还未加载完成就呈现子视图,导致子视图无法正确显示数据的问题。以下是一种可能的实现方式:
-
在父视图中,先定义一个布尔值变量 'isDataLoaded',初始值为 'false'。
-
在加载数据的方法中,当数据加载完成后,将 'isDataLoaded' 设置为 'true'。
-
在子视图中,使用 'if' 语句判断 'isDataLoaded' 是否为 'true',如果为 'true' 则呈现子视图,否则显示加载中的提示。
示例代码如下:
struct ParentView: View {
@State var isDataLoaded = false
@State var data: [String] = []
var body: some View {
VStack {
if isDataLoaded {
ChildView(data: data)
} else {
Text('Loading...')
.onAppear {
loadData()
}
}
}
}
func loadData() {
// Load data here
// When data is loaded, set isDataLoaded to true
data = ['Item 1', 'Item 2', 'Item 3']
isDataLoaded = true
}
}
struct ChildView: View {
var data: [String]
var body: some View {
List(data, id: \.self) { item in
Text(item)
}
}
}
在上面的示例中,当 'ParentView' 加载时,会显示 'Loading...',并调用 'loadData()' 方法加载数据。当数据加载完成后,会将 'isDataLoaded' 设置为 'true',此时子视图 'ChildView' 会呈现,并显示加载的数据。
原文地址: https://www.cveoy.top/t/topic/j9dH 著作权归作者所有。请勿转载和采集!