跟随NavigationLink并返回后,SwiftUI .toolbar消失了

问题描述

我在NavigationView的顶层添加一个.toolbar,它最终将用于在不使用滑动手势(向上按钮,向下按钮等)的情况下选择列表中的项目。我还有一个.navigationBar可以访问帐户和设置的其他视图。

在大多数情况下看起来确实不错,但是当我在NavigationView中跟随NavigationLink(在.navigationBarItems中)时,然后使用内置的后退导航,我的.toolbar从顶部消失了级别。

我将.toolbar放在错误的位置吗? .navigationViewStyle(StackNavigationViewStyle())感觉像是一个问题,因为当我注释掉它时,工具栏在导航时不会消失...但是我不喜欢认行为在横向中的工作方式,所以我依靠它


import SwiftUI

struct ContentView: View {

    var body: some View {

                NavigationView {

                    List {
                        Group {
                            Section(header: Text("List Items").foregroundColor(.gray).font(.footnote)) {
                                Text("List Item One")
                                Text("List Item Two")
                                Text("List Item Three")
                            }
                        }
                   }.navigationTitle("Top Level List").navigationBarTitledisplayMode(.inline)
                       .ignoresSafeArea(.all)

    // MARK: NAVBAR

                        .navigationBarItems(
                            leading:
                            NavigationLink(destination: UserView()) {
                                Image(systemName: "person.crop.circle").font(.title2)
                            },trailing:
                                NavigationLink(destination: SettingsView()) {
                                    Image(systemName: "gear").font(.title2)
                                })

     //MARK: - CONTENT NAV

                        .toolbar {

                            ToolbarItemGroup(placement: .bottomBar) {

                                Button(action: {},label: {Label("Mute",systemImage: "speaker.slash.fill")})
                                Spacer()
                                Button(action: {},label: {Label("Repeat",systemImage: "arrow.clockwise")})
                                Spacer()
                                Button(action: {},label: {Label("PrevIoUs",systemImage: "arrow.up")})
                                Spacer()
                                Button(action: {},label: {Label("Next",systemImage: "arrow.down")})
                                Spacer()
                                Button(action: {},label: {Label("Select",systemImage: "arrow.right")})

                            }
                        }
                }.navigationViewStyle(StackNavigationViewStyle())
        }
}

struct UserView: View {

    @State private var username: String = ""
    @State private var password: String = ""

    var body: some View {

                    Form {
                        TextField("Username",text: $username)
                        SecureField("Password",text: $password)
                    }
                    .navigationBarTitle("Account").font(.subheadline)

    }
}

struct SettingsView: View {
    
    @State private var setting1: String = ""
    @State private var setting2: String = ""

    var body: some View {

        Form {
            TextField("Setting One",text: $setting1)
            SecureField("Setting Two",text: $setting2)
        }
        .navigationBarTitle("Settings").font(.subheadline)

    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

解决方法

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

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

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