在加载数据之后再加载子视图,可以避免数据还未加载完成就呈现子视图,导致子视图无法正确显示数据的问题。以下是一种可能的实现方式:

  1. 在父视图中,先定义一个布尔值变量 'isDataLoaded',初始值为 'false'。

  2. 在加载数据的方法中,当数据加载完成后,将 'isDataLoaded' 设置为 'true'。

  3. 在子视图中,使用 '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' 会呈现,并显示加载的数据。

Swift UI 加载数据后显示子视图 - 避免数据未加载完成导致视图错误

原文地址: https://www.cveoy.top/t/topic/j9dH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录