简体   繁体   中英

SwiftUI toolbar not showing on a NavigationLink view

I'm trying to show a toolbar on a view that is inside to navigation links. When I navigate to the third view I get the following message:

2020-09-15 23:09:31.097289-0500 CountTime[35018:3542166] [Assert] displayModeButtonItem is internally managed and not exposed for DoubleColumn style. Returning an empty, disconnected UIBarButtonItem to fulfill the non-null contract.

And the toolbar is not shown. This happens only on iPhone, not iPad. I'm using Xcode 12 GM.

Here is the code:

struct ContentView: View {
    var body: some View {
        NavigationView {
            NavigationLink(
                destination: SecondView(),
                label: {
                    Text("Navigate")
                })
        }
    }
}

struct SecondView: View {
    var body: some View {
        ZStack {
            NavigationLink(
                destination: Text("Destination")
                    .toolbar {
                        ToolbarItem(placement: ToolbarItemPlacement.bottomBar) {
                                Button(action: {
                                    print("sharing")
                                }) {
                                    Image(systemName: "square.and.arrow.up")
                                }
                        }
                    },
                label: {
                    Text("Navigate")
                })
        }
    }
}

displayModeButtonItem is internally managed and not exposed for DoubleColumn style

In your case SwiftUI for some reason tries to present a NavigationView in a DoubleColumn style.

A possible solution is to specify the style explicitly:

struct ContentView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: SecondView()) {
                Text("Navigate")
            }
        }
        .navigationViewStyle(StackNavigationViewStyle())
    }
}

I got the some issue.

.toolbar {
      ToolbarItemGroup(placement: .navigationBarTrailing) {
        Button(action: {
          showEditView = true
        }, label: {
          Text("Edit")
        })
      }
}

does not work but the deprecated navigationBarItems works.

    .navigationBarItems(trailing:
                          Button(action: {
                            showEditView = true
                          }, label: {
                            Text("Edit")
                          })
    )

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM