我想在滚动时隐藏我的NavigationBar
,实际上它必须自动隐藏,但是当我尝试使用多个视图时它不起作用。另外,当我删除自定义视图并用List
封装NavigationView
时,它也可以工作。但是我需要SearchBar
和StatusView
视图。有什么建议吗?
顺便说一句,我在设备上运行它,在这里我使用canvas进行演示。
谢谢。
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()
}
}
答案 0 :(得分:1)
只是个主意,令人毛骨悚然...尝试将您的自定义视图放入List
内,如下所示(我知道它会起作用,但是我不确定自动隐藏是否会起作用)
NavigationView {
List {
SearchBar(searchText: $viewModel.searchText)
StatusView(status: $viewModel.status)
Divider()
ForEach (0...viewModel.characters.results.count, id: \.self) { index in
...
答案 1 :(得分:0)
基于Asperi的解决方案,我希望SearchBar和StatusView始终可见,即,标题消失后应该停止滚动。您可以使用如下所示的节标题来实现此目的(只是一个粗略的草图):
NavigationView {
List {
Section(header: {
VStack {
SearchBar...
StatusView....
}
}) {
ForEach...
}
}
}