我想在滚动时隐藏NavigationBar,实际上它必须自动隐藏,但是当我尝试使用多个视图时,它不起作用。另外,当我删除自定义视图并用List封装NavigationView时,它也可以工作。但是我需要SearchBarStatusView视图。有什么建议吗?

顺便说一下,我在设备上运行它,在这里我使用画布进行演示。

谢谢。

var body: some View {
        NavigationView {
            VStack(spacing: 0) {
                SearchBar(searchText: $viewModel.searchText)
                StatusView(status: $viewModel.status)
                Divider()
                List(0...viewModel.characters.results.count, id: \.self) { index in
                    if index == self.viewModel.characters.results.count {
                        LastCell(vm: self.viewModel)
                    } else {
                        ZStack {
                            NavigationLink(destination: DetailView(detail: self.viewModel.characters.results[index])) {
                                EmptyView()
                            }.hidden()
                            CharacterCell(character: self.viewModel.characters.results[index])
                        }
                    }
                }
                .navigationBarTitle("Characters", displayMode: .large)
            }

        }
        .onAppear {
            self.viewModel.getCharacters()
        }
    }

最佳答案

只是想法,抓痒...尝试将您的自定义视图放在List内,如下所示(我知道它会起作用,但是我不确定自动隐藏是否会起作用)

NavigationView {
  List {
      SearchBar(searchText: $viewModel.searchText)
      StatusView(status: $viewModel.status)
      Divider()

      ForEach (0...viewModel.characters.results.count, id: \.self) { index in
      ...

关于ios - SwiftUI导航栏在滚动时不会消失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60933304/

10-12 03:45