diff --git a/ApplicationLibrary/Views/Abstract/NavigationStackCompat.swift b/ApplicationLibrary/Views/Abstract/NavigationStackCompat.swift index 84901fe..f2dc3f1 100644 --- a/ApplicationLibrary/Views/Abstract/NavigationStackCompat.swift +++ b/ApplicationLibrary/Views/Abstract/NavigationStackCompat.swift @@ -1,17 +1,41 @@ import SwiftUI -public func NavigationStackCompat(@ViewBuilder content: () -> some View) -> some View { - Group { +public struct NavigationStackCompat: View { + private let content: Content + + public init(@ViewBuilder content: () -> Content) { + self.content = content() + } + + public var body: some View { if #available(iOS 17.0, macOS 13.0, tvOS 17.0, *) { // view not updating in iOS 16, but why? - NavigationStack { - content() + NavigationStackWithPath { + content } } else { - NavigationView(content: content) + NavigationView { + content + } #if !os(macOS) - .navigationViewStyle(.stack) + .navigationViewStyle(.stack) #endif } } } + +@available(iOS 16.0, macOS 13.0, tvOS 16.0, *) +private struct NavigationStackWithPath: View { + private let content: Content + @State private var path = NavigationPath() + + init(@ViewBuilder content: () -> Content) { + self.content = content() + } + + var body: some View { + NavigationStack(path: $path.animation(.linear(duration: 0))) { + content + } + } +} diff --git a/ApplicationLibrary/Views/Setting/SettingView.swift b/ApplicationLibrary/Views/Setting/SettingView.swift index 17ff2ed..4fcea91 100644 --- a/ApplicationLibrary/Views/Setting/SettingView.swift +++ b/ApplicationLibrary/Views/Setting/SettingView.swift @@ -99,8 +99,10 @@ public struct SettingView: View { #if os(macOS) Tabs.app.navigationLink #endif - ForEach([Tabs.core, Tabs.packetTunnel, Tabs.onDemandRules, Tabs.profileOverride]) { it in - it.navigationLink + Section { + ForEach([Tabs.core, Tabs.packetTunnel, Tabs.onDemandRules, Tabs.profileOverride]) { it in + it.navigationLink + } } #if !os(tvOS) Section("About") {