xcode SwiftUI TabView在更改可见性时有延迟

ycggw6v2  于 2023-08-07  发布在  Swift
关注(0)|答案(1)|浏览(104)

我有一个TabView,在某个子视图中,我想隐藏工具栏。这可以通过.toolbar(.hidden, for: .tabBar)来实现。问题是当工具栏再次可见时:工具栏需要很长时间才能再次显示。
它可以很容易地用下面的代码复制:

struct ContentView: View {
    var body: some View {
        TabView {
            NavigationStack {
                NavigationLink("Tap Me") {
                    Text("Detail View")
                        .toolbar(.hidden, for: .tabBar)
                }
                .navigationTitle("Primary View")
            }
            .tabItem {
                Label("Home", systemImage: "house")
            }
        }
    }
}

字符串
延迟可以在下面的GIF

中看到
老实说,在我看来,这个原生功能是有缺陷的。我尝试了SwiftUI Introspect package,但这里也有延迟。
这个问题有什么解决办法吗?

pxyaymoc

pxyaymoc1#

稍微修改一下你的代码,把NavigationStack放在TabBar上,因为你可以像主视图一样指定导航堆栈。所以它工作得很好,没有延迟。

struct SwiftUIView: View {
    var body: some View {
        NavigationStack {
            TabView {
                    NavigationLink("Tap Me") {
                        Text("Detail View")
                            .toolbar(.hidden, for: .tabBar)
                    }
                .tabItem {
                    Label("Home", systemImage: "house")
                }
            }
            .navigationTitle("Primary View")
        }
    }
}

字符串

相关问题