可刷新的 ProgressView 显示在可搜索的 SearchBar 上,但仅作为 NavigationStack 的根

问题描述 投票:0回答:1

我有一个 SwiftUI 应用程序,其视图既可搜索又可刷新。当它是 NavigationStack 的根时,搜索和进度视图将显示在彼此的顶部。当我从 NavigationLink 推送到同一视图时,它们并不相互重叠。我尝试重新排列可搜索/可刷新的顺序并将它们移动到视图中的不同级别,但这并没有改变任何内容。如何使根视图不具有重叠的搜索栏和进度视图?

左侧为根视图,右侧为非根视图:

as root view as detail view

这是一个最小的重现:

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)) }
    }
}
ios swift swiftui
1个回答
0
投票

这可能是因为您的可搜索搜索栏被允许隐藏。我通过修改我的 .searchable 修饰符解决了这个问题,如下所示:

.searchable(text: $searchText, placement: .navigationBarDrawer(displayMode: .always))
© www.soinside.com 2019 - 2024. All rights reserved.