I Have this app that uses the new sidebar introduced in iOS14 for iPad os but I can't figure out why it doesn't remember the state when its hidden
here is the stack overflow question where I've posted a gif of the problem
StackOverflow Question (w/ Video)
This is the sidebar struct
for tagging the elements I use a custom struct called NavigationItem
and here is where I placed the Sidebar in the content view, as you can see if the device is an iPad (detected using sizeClasses) I use the sidebar, otherwise if its an iPhone I use the TabBar
here is the stack overflow question where I've posted a gif of the problem
StackOverflow Question (w/ Video)
This is the sidebar struct
Code Block swift import SwiftUI struct Sidebar: View { @Environment(\.managedObjectContext) var moc @Binding var selection : Set<NavigationItem> var body: some View { List(selection: $selection) { NavigationLink(destination: AgendaView().environment(\.managedObjectContext, moc).navigationTitle("Agenda"), label: { Label("Agenda", systemImage: "book") }) .tag(NavigationItem.agenda) NavigationLink(destination: Text("Subjects"), label: { Label("Materie", systemImage: "tray.full") }) .tag(NavigationItem.subjects) NavigationLink(destination: Text("Calendario"), label: { Label("Calendario", systemImage: "calendar") }) .tag(NavigationItem.calendar) NavigationLink(destination: SettingsView().environment(\.managedObjectContext, moc).navigationTitle("Impostazioni"), label: { Label("Impostazioni", systemImage: "gear") }) .tag(NavigationItem.settings) } .listStyle(SidebarListStyle()) } }
for tagging the elements I use a custom struct called NavigationItem
Code Block swift enum NavigationItem { case agenda case calendar case ... }
and here is where I placed the Sidebar in the content view, as you can see if the device is an iPad (detected using sizeClasses) I use the sidebar, otherwise if its an iPhone I use the TabBar
Code Block swift import SwiftUI struct ContentView: View { @Environment(\.horizontalSizeClass) var horizontalSizeClass @Environment(\.managedObjectContext) var moc @State private var selection : Set<NavigationItem> = [.agenda] @ViewBuilder var body: some View { if horizontalSizeClass == .compact { TabBar(selection: $selection) .environment(\.managedObjectContext, moc) } else { NavigationView { Sidebar(selection: $selection) .environment(\.managedObjectContext, moc) .navigationTitle("Menu") } } } }