前提・実現したいこと
SwiftUIで設定画面などの簡単なフォーム画面の作成
特定の機種で画面回転後、Form内NavigationLinkがおかしな挙動になります。
この問題さえ解決できればSwiftUIでアプリをリリースしたいと考えております。
何か対処方法はありませんでしょうか?
回転動作可能なiPhoneアプリの設定画面などはこの問題が発生しうると認識しています。
動作を完全に改善するのは難しいとしても、こんなふうに凌いでいるなど、対処療法的なアイデアでも頂戴できれば大変ありがたいです。
発生している問題・エラーメッセージ
NavigationView内にForm、そのFormの中にNavigationLinkを設置して、次のViewに遷移しています。
この状態で、iPhone8 Plus等のPlus系もしくは11 Pro Max等のMax系の端末にて画面を回転させた後に、このNavigationLinkをタップすると、
90度回転させた回数分だけ同じViewが何度もpushされるおかしな挙動になってしまいます。
Plus系、Max系以外のiPhoneではこのような挙動にはなりません。
下記数行のコードをMax系Plus系シミュレータで実行、回転動作してリンクをタップするだけで簡単に再現できます。
また、この素朴なサンプルではなくても、NavigationView内にForm、Form内からNavigationLinkの関係ですと今のところ100%この現象が発生します。
この内容がFormではなく通常のListではこの問題は発生しません。
Listに.listStyle(GroupedListStyle())を設定すると(見た目的にFormに近い状態になります)この問題は発生します。
該当のソースコード
Swift
1import SwiftUI 2struct ContentView: View { 3 var body: some View { 4 NavigationView { 5 Form { 6 NavigationLink(destination: Text("destination")) { 7 Text("link") 8 } 9 } 10 } 11 } 12}
試したこと
実機、シミュレータ共にiOS13.5までテストしましたが、画面回転後は一貫してNavigationLinkがおかしな挙動になります。
あなたの回答
tips
プレビュー