SwiftUI: обновление NavigationView после удаления (iPad) - PullRequest
1 голос
/ 12 января 2020

Я хочу показать пустое представление (здесь: Text("Please select a person.")) после того, как на iPad произошло удаление строки.

В настоящее время: The подробный вид на iPad не будет обновляться после удаления элемента. Ожидается: Показать пустое представление после удаления выбранного элемента.

struct DetailView: View {
    var name: String
    var body: some View {
        Text("Detail of \(name)")
    }
}

struct MainView: View {
    @State private var users = ["Paul", "Taylor", "Adele"]

    var body: some View {
        NavigationView {
            List {
                ForEach(users, id: \.self) { user in
                    NavigationLink(destination: DetailView(name: user)) {
                        Text(user)
                    }
                }
                .onDelete(perform: delete)
            }
            Text("Please select a person.")
        }
    }

    func delete(at offsets: IndexSet) {
        users.remove(atOffsets: offsets)
    }
}

Пример NavigationView из Взлом с помощью Swift .

В приведенном ниже примере подробный вид отображается правильно после первого запуска: здесь

Но после удаления строки, ранее выбранный подробный вид (здесь: * 1023) *) по-прежнему отображается: здесь

1 Ответ

0 голосов
/ 12 января 2020

Вы можете использовать второй выбор для обновления списка: index. Таким образом, он усилит освежение:

    var body: some View {
    NavigationView {
        List {
            ForEach(users.indices, id: \.self) { index in
                NavigationLink(destination: DetailView(name: self.users[index])) {
                    Text(self.users[index])
                }
            }
            .onDelete(perform: delete)
        }
        Text("Please select a person.")
    }
    }
...