滚动时 SwiftUI NavigationBar 不会消失
SwiftUI NavigationBar not disappearing while scrolling
我想在滚动时隐藏我的 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()
}
}
只是想法,粗糙...尝试将您的自定义视图放在 List
中,如下所示(我知道它会起作用,但我不确定自动隐藏是否会起作用)
NavigationView {
List {
SearchBar(searchText: $viewModel.searchText)
StatusView(status: $viewModel.status)
Divider()
ForEach (0...viewModel.characters.results.count, id: \.self) { index in
...
根据 Asperi 的解决方案,我希望 SearchBar 和 StatusView 始终可见,即它应该在标题消失后停止滚动。您可以使用如下所示的 header 部分(只是粗略的草图)来实现此目的:
NavigationView {
List {
Section(header: {
VStack {
SearchBar...
StatusView....
}
}) {
ForEach...
}
}
}
我想在滚动时隐藏我的 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()
}
}
只是想法,粗糙...尝试将您的自定义视图放在 List
中,如下所示(我知道它会起作用,但我不确定自动隐藏是否会起作用)
NavigationView {
List {
SearchBar(searchText: $viewModel.searchText)
StatusView(status: $viewModel.status)
Divider()
ForEach (0...viewModel.characters.results.count, id: \.self) { index in
...
根据 Asperi 的解决方案,我希望 SearchBar 和 StatusView 始终可见,即它应该在标题消失后停止滚动。您可以使用如下所示的 header 部分(只是粗略的草图)来实现此目的:
NavigationView {
List {
Section(header: {
VStack {
SearchBar...
StatusView....
}
}) {
ForEach...
}
}
}