SwiftUI在应该绘制完全不同的列表视图时会重用列表视图(可能是错误?)

时间:2020-04-29 09:04:43

标签: ios swift swiftui

我为设置菜单创建了一个列表,其中包含两个部分,您可以在其中重新排序/添加/删除一组页面。它的工作方式类似于Apple的Today Widget编辑菜单,您可以在其中添加和重新排序项目。这是我的代码:

连接器类代码段:

    enum DetailsPage {
        case page1
        case page2
        case page3

        func printed() -> String {
            switch self {
            case .page1:
                return "Page 1"
            case .page2:
                return "Page 2"
            case .page3:
                return "Page 3"
            }
        }
    }
    @Published var detailsPages: [DetailsPage] = [.page1, .page2]
    @Published var hiddenDetailsPages: [DetailsPage] = [.page3]

SwiftUI代码段:

        List {
            Section {
                ForEach(self.connector.detailsPages, id: \.self) { page in
                    HStack(spacing: 0) {
                        Text("\(page.printed())")

                        Spacer()

                    }
                }
                .onMove { (source, destination) in
                    self.connector.detailsPages.move(fromOffsets: source, toOffset: destination)
                }
                .onDelete { (rows) in
                    rows.forEach { (i) in
                        let page: SettingsConnector.DetailsPage = self.connector.detailsPages[i]
                        self.connector.detailsPages.remove(at: i)
                        self.connector.hiddenDetailsPages.insert(page, at: 0)

                    }
                }
            }


            Section {
                ForEach(self.connector.hiddenDetailsPages, id: \.self) { page in
                    HStack(spacing: 0) {
                        Image(systemName: "plus.circle.fill")
                            .foregroundColor(.green)
                            .padding(.horizontal, 5)

                        Text("Add \(page.printed())")
                            .padding(.horizontal, 5)

                        Spacer()
                    }
                }

            }
        }

当我删除第一部分上的页面时,它确实出现在hiddenDetailsPages部分中。

但是,即使各部分之间没有直接关系,单元格视图也只是移至第二部分,而是使用第一部分中的绘图代码。 即使该单元格出现在第二部分中,也不会使用第二部分中的绘图指令。

我是不是完全出错了,或者这是SwiftUI中的错误?

0 个答案:

没有答案