SwiftUI 如何在不使用导航视图的情况下显示大导航标题?

问题描述

我正在使用来自 this SO Answer 的以下 PullToRefreshHack,效果很好,但问题是当我将它包装在 NavigationView(我需要能够显示此视图的大导航标题)中时,我失去了该功能的拉刷新。我不确定为什么? ? 我该如何解决这个问题,或者删除 NavigationView 但仍然在顶部显示标题

 //Usage
     var body: some View {
        NavigationView {
            ScrollView {
             PullToRefreshHack(coordinateSpaceName: "pullToRefreshInTrendsView") {
                        print("user pulled to refresh")
                          generator.impactOccurred()
                        self.loadDataForTrendsView()
                    }


struct PullToRefreshHack: View {
    
    var coordinateSpaceName: String
    var onRefresh: ()->Void
    
    @State var needRefresh: Bool = false
    
    var body: some View {
        GeometryReader { geo in
            if (geo.frame(in: .named(coordinateSpaceName)).midY > 50) {
                Spacer()
                    .onAppear {
                        needRefresh = true
                    }
            } else if (geo.frame(in: .named(coordinateSpaceName)).maxY < 10) {
                Spacer()
                    .onAppear {
                        if needRefresh {
                            needRefresh = false
                            onRefresh()
                        }
                    }
            }
            HStack {
                Spacer()
                if needRefresh {
                    ProgressView()
                } else {
                    Text("")
                }
                Spacer()
            }
            .onAppear {
                //print("PullToRefreshHack VIEW .onAppear is called")
            }
        }.padding(.top,-50)
    }
    
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)