【问题标题】:SwiftUI: List data dissapears after you dismiss sheetSwiftUI:关闭工作表后列表数据消失
【发布时间】:2020-07-01 16:56:09
【问题描述】:

我有一个水平图像列表。导航栏中的一个小配置文件/设置按钮。当您单击配置文件按钮时,工作表视图会向上滑动,当您关闭它时,列表似乎会丢失它的单元格(基本上是其他图像的 HStacks)

这是显示工作表和列表的代码

    var body: some View {
        NavigationView {
            List {
                ForEach(0..<self.categories.count) {
                    ExploreRow(title: self.categories[$0])
                }
            }
            .navigationBarTitle("Justview")
            .navigationBarItems(trailing: profileButton)
            .sheet(isPresented: self.$showingProfile) {
                Text("User Profile: \(self.userData.userProfile.username)")
            }
        }
    }

ExploreRow 本质上是滚动视图中的水平堆栈,显示从网络加载的图像。

工作表前图片:

工作表关闭图像后:

【问题讨论】:

    标签: ios swift listview swiftui reload


    【解决方案1】:

    我假设List 中的categories 并不多(因为它们不应该很多),所以最简单的就是强制重建列表(假设你没有在ExploreRow.init 中做任何重物,比如

    List {
        ForEach(0..<self.categories.count) {
            ExploreRow(title: self.categories[$0])
        }.id(UUID())
    }
    .navigationBarTitle("Justview")
    

    *这个问题是由于 List 的缓存重用行视图,这是已知的。

    【讨论】:

    • 嗨!目前有4个类别。每行有10个项目。我尝试添加 .id 修饰符,但它导致整个列表消失。有没有办法让列表缓存所有内容(即行和行中的视图)?
    • 我无法测试,因为没有您的代码,但尝试不同的地方获取 id。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多