在 NavigationView 上可搜索的 SwiftUI 始终显示,仅在滚动时隐藏
SwiftUI searchable on NavigationView always shown, hides only on scroll
我正在编写一个关于电影的相当简单的 SwiftUI 应用程序,我遇到了这个问题,即 NavigationView
上的新 .searchable
修饰符总是显示,而它应该被隐藏,除非你拉在 List
.
上
如果我向上滚动它会正确隐藏它,如果我向下滚动它也会正确隐藏它,但除此之外,它总是显示。请参阅 gif 进行说明。 (基本上它应该与消息应用程序中的行为相同)
我使用可搜索的代码非常简单:
var body: some View {
NavigationView {
List {
ForEach(/*** movie stuff ***/) { movie in
///// row here
}
}
.listStyle(GroupedListStyle())
.onAppear {
// load movies
}
.navigationTitle("Discover")
.searchable(text: $moviesRepository.searchText, placement: .toolbar, prompt: "Search...")
}
}
}
因此,在列表视图上方添加进度视图后,它突然开始按照我想要的方式工作。现在的代码改动很小,看起来像这样。
var body: some View {
NavigationView {
VStack {
if /** we're doing search, I'm checking search text **/ {
ProgressView()
.padding()
}
if !movies.isEmpty {
List {
ForEach(/** movies list **/) { movie in
// movie row here
}
}
.listStyle(GroupedListStyle())
.navigationTitle("Discover")
.searchable(text: $moviesRepository.searchText, placement: .toolbar,
prompt: Text("Search...")
.foregroundColor(.secondary)
)
} else {
ProgressView()
.navigationTitle("Discover")
}
}
}
.onAppear {
// load movies
}
}
基本上在添加进度视图之后,它开始按照我在 OP 中描述的方式以及它为 ChrisR 工作的方式开始工作
我正在编写一个关于电影的相当简单的 SwiftUI 应用程序,我遇到了这个问题,即 NavigationView
上的新 .searchable
修饰符总是显示,而它应该被隐藏,除非你拉在 List
.
如果我向上滚动它会正确隐藏它,如果我向下滚动它也会正确隐藏它,但除此之外,它总是显示。请参阅 gif 进行说明。 (基本上它应该与消息应用程序中的行为相同)
我使用可搜索的代码非常简单:
var body: some View { NavigationView { List { ForEach(/*** movie stuff ***/) { movie in ///// row here } } .listStyle(GroupedListStyle()) .onAppear { // load movies } .navigationTitle("Discover") .searchable(text: $moviesRepository.searchText, placement: .toolbar, prompt: "Search...") } } }
因此,在列表视图上方添加进度视图后,它突然开始按照我想要的方式工作。现在的代码改动很小,看起来像这样。
var body: some View {
NavigationView {
VStack {
if /** we're doing search, I'm checking search text **/ {
ProgressView()
.padding()
}
if !movies.isEmpty {
List {
ForEach(/** movies list **/) { movie in
// movie row here
}
}
.listStyle(GroupedListStyle())
.navigationTitle("Discover")
.searchable(text: $moviesRepository.searchText, placement: .toolbar,
prompt: Text("Search...")
.foregroundColor(.secondary)
)
} else {
ProgressView()
.navigationTitle("Discover")
}
}
}
.onAppear {
// load movies
}
}
基本上在添加进度视图之后,它开始按照我在 OP 中描述的方式以及它为 ChrisR 工作的方式开始工作