SwiftUI повторно использует представление списка, когда оно должно нарисовать совсем другое (возможная ошибка?) - PullRequest
0 голосов
/ 29 апреля 2020

Я создал список для меню настроек с двумя разделами, где вы можете изменить порядок / добавить / удалить набор страниц. Он должен работать аналогично меню редактирования виджета Apple Today, в котором можно добавлять и изменять порядок элементов. Это мой код:

Фрагмент кода класса соединителя:

    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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...