swiftUI bottomBar 工具栏在返回时消失

geo*_*eok 6 ios swiftui

我有这些 swiftUI 视图并尝试使用toolbar(bottomBar)。当您启动应用程序时,它看起来很好,但是在View2使用导航链接然后返回主视图后,工具栏消失了。当 NavigationLink 在列表中时会发生这种情况。如果您不使用列表(将导航链接放在 VStack 或类似内容中),它会按预期工作,当您返回初始视图时,工具栏会重新出现。有没有办法来解决这个问题?在此处输入图片说明

import SwiftUI

struct View2: View {
    var body: some View {
        VStack{
            Text("View2")
        }
        
    }
}

struct ContentView: View {
    var body: some View {
        NavigationView{
            List{
                NavigationLink(destination: View2()) {
                    Text("go to View2")
                }
                
            }
            .toolbar(content: {
                ToolbarItem(placement: .bottomBar, content: {
                    Text("toolbar item 1")
                })
            })
        }
        .navigationViewStyle(StackNavigationViewStyle())
            
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
Run Code Online (Sandbox Code Playgroud)

Asp*_*eri 13

这是已知的错误。这是可能的解决方法 - View2 上的强制刷新消失(使用 Xcode 12.1 / iOS 14.1 测试)

struct ContentView: View {
    @State private var refresh = UUID()

    var body: some View {
        NavigationView{
            List{
                NavigationLink(destination:
                        View2().onDisappear { refresh = UUID() }) { // << here !!
                    Text("go to View2")
                }
            }
            .toolbar(content: {
                 ToolbarItem(placement: .bottomBar, content: {
                      Text("toolbar item 1")
                 })
            }).id(refresh)                     // << here !!

        }
        .navigationViewStyle(StackNavigationViewStyle())
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 对我不起作用。XCode 12.4 (12D4e)。 (2认同)