🐈
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