SwiftUI NavigationSplitView — сброс подробного представления при изменении выбора боковой панели

В iOS 16 у меня есть представление Sidebar-Content-Detail с тремя столбцами. Когда выбор боковой панели изменяется, я хотел бы обновить (очистить) подробное представление.

          var body: some View {
        NavigationSplitView {
            List(Content.allCases, selection: $selectedContent) { content in
                NavigationLink(content.localizedName, value: content)
            }
            .navigationTitle("Sidebar")
        } content: {
            List(
                dataModel.details(in: selectedContent),
                selection: $selectedDetail)
            { detail in
                NavigationLink(detail.name, value: detail)
            }
            .navigationTitle(selectedContent?.localizedName ?? "")
        } detail: {
            MyDetail(recipe: selectedDetail)
        }
    }

Я предполагаю, что при изменении боковой панели мне нужно будет установитьselectedDetailдо нуля. Но как зафиксировать изменение боковой панели?

1 ответ

Вы должны иметь возможность добавить.onChangeмодификатор:

      .onChange(of: selectedContent) { _ in 
  selectedDetail = nil
}
Другие вопросы по тегам