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 для подробного просмотра?

0 ответов

Другие вопросы по тегам