🐈
SwiftUIでNavigationStackとNavigationViewを透過的に利用する
iOS15をまだサポートしていて、NavigationStack
を利用したい場合に利用できるAdaptiveNavigationStack
を作りました。
iOS16以上であれば、NavigationStack
が、iOS15以下であればNavigationView
が使われます。
通常のプッシュ遷移であれば、実用に耐えるものになっていると思います。
また、iOS15のNavigationView
の場合は.navigationViewStyle(.stack)
をつけてあげないと、@State
などでもっている値が更新されて、ビューが再描画される際、スタックされたビューが消えて最初のViewに戻ってしまうという不具合に遭遇する場合があるので、こちらも対応しています。
以下利用例です。NavigationStack
やNavigationView
と同様に使えます。
AdaptiveNavigationStack {
NavigationLink {
Text("destination")
} label: {
Text("label")
}
}
環境
Xcode 14.3.1
Swift 5.8.1
Discussion