Я создал список для меню настроек с двумя разделами, где вы можете изменить порядок / добавить / удалить набор страниц. Он должен работать аналогично меню редактирования виджета 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?