我有一个 SwiftUI 应用程序,其视图既可搜索又可刷新。当它是 NavigationStack 的根时,搜索和进度视图将显示在彼此的顶部。当我从 NavigationLink 推送到同一视图时,它们并不相互重叠。我尝试重新排列可搜索/可刷新的顺序并将它们移动到视图中的不同级别,但这并没有改变任何内容。如何使根视图不具有重叠的搜索栏和进度视图?
左侧为根视图,右侧为非根视图:
这是一个最小的重现:
import SwiftUI
@main
struct RefreshableSearchableISsueApp: App {
var body: some Scene {
WindowGroup {
NavigationStack {
ContentView()
}
}
}
}
struct ContentView: View {
@State var items = ["1", "2", "3", "4", "5"]
@State var searchText = ""
var body: some View {
List {
ForEach(items, id: \.self) { item in
NavigationLink(destination: ContentView()) {
HStack {
Text(item)
Spacer()
}
}
}
}
.searchable(text: $searchText)
.refreshable { try? await Task.sleep(for: .seconds(1)) }
}
}
这可能是因为您的可搜索搜索栏被允许隐藏。我通过修改我的 .searchable 修饰符解决了这个问题,如下所示:
.searchable(text: $searchText, placement: .navigationBarDrawer(displayMode: .always))