I want to remove the standard Back-Button in a SwiftUI app and display an icon instead.
The code below works fine on iPhone.
On iPad the standard Back-Button plus my icon appear in the Nav-Bar.
How can I solve this?
struct Two_Column_V1: View {
#if os(iOS)
@Environment(\.horizontalSizeClass) var horizontalSizeClass
#endif
var colors: [Color] = [.red, .green, .blue, .yellow, .purple]
var body: some View {
NavigationView {
ListView()
DetailView()
}
#if os(iOS)
.navigationViewStyleStack(if: horizontalSizeClass == .compact)
#endif
}
}
struct ListView : View{
var colors: [Color] = [.red, .green, .blue, .yellow, .purple]
var body: some View{
List {
ForEach(1...5, id: \.self) { val in
NavigationLink(destination: DetailView(text: String(val), color: colors[val-1])) {
Text("Link\(val)")
.font(.largeTitle)
.foregroundColor(colors[val-1])
.padding()
}
}
}
.navigationTitle("List")
}
}
struct DetailView: View {
@Environment(\.dismiss) var dismiss
var text = "SPLASH"
var color: Color = .black
var body: some View {
VStack {
Text("Detail")
.font(.largeTitle)
.padding()
Text("Text: \(text)")
.font(.title)
.foregroundColor(color)
}
//.navigationTitle("Detail")
.navigationBarBackButtonHidden(true)
.navigationBarItems( leading: Button(action: { dismiss()}) {Image(systemName: "arrow.left.circle")})
}
}
extension NavigationView {
@ViewBuilder
func navigationViewStyleStack(if styleStack: Bool) -> some View {
if styleStack {
#if os(iOS)
self.navigationViewStyle(StackNavigationViewStyle())
#else
self.navigationViewStyle(DefaultNavigationViewStyle())
#endif
} else {
//self.navigationViewStyle(DoubleColumnNavigationViewStyle())
self.navigationViewStyle(DefaultNavigationViewStyle())
}
}
}