NavigationSplitView не сворачивается при выборе элемента (изменение подробного представления)
Когда я выбираю элемент в своем NavigationSplitView, меню не закрывается.
Я использую инкапсулированное представление, которое использовалось в макете iPhone/до iOS 16, и мне интересно, есть ли команда для закрытия меню.
Я все равно хотел бы сохранить текущее поведение для iPad с альбомной ориентацией, поскольку меню там не перекрывает подробное представление:
@available (iOS 16.0, *)
struct SplitLibraryView: View {
@StateObject var viewModel: SplitLibraryViewModel = SplitLibraryViewModel()
var body: some View {
NavigationSplitView(columnVisibility: $viewModel.visibility) {
NavigationStack {
LibraryView(viewModel: viewModel.libraryViewModel)
}
} detail: {
switch viewModel.detailType {
case .collections:
CollectionsView(sharedWithMe: false)
case .shared:
CollectionsView(sharedWithMe: true)
case .bookmarks:
EmptyView()
case .space(let id, let name):
SpaceView(spaceId: id, spaceName: name)
case .addSpace:
EmptyView()
}
}
}
}
@available (iOS 16.0, *)
class SplitLibraryViewModel: ObservableObject {
@Published var detailType: LibraryMenuItemType = .collections
@Published var libraryViewModel = LibraryViewModel(delegate: nil)
@Published var visibility: NavigationSplitViewVisibility = .automatic
init() {
libraryViewModel.delegate = self
}
}
@available (iOS 16.0, *)
extension SplitLibraryViewModel: LibraryViewDelegate {
func profileLoaded(profile: Profile) {
libraryViewModel.profile = profile
Profile.me = profile
}
func itemSelected(item: HashableLibraryMenuItem) {
self.detailType = item.type // Detail view is changed here
}
}
Я пробовал вызвать /.dismiss при выборе, но это не работает.
Есть ли способ свернуть меню (для компактных макетов) при обновлении подробного экрана?
Можно ли использовать NavigationPath для подробного просмотра?