私のアプリにはシンプルなナビゲーションが必要です
- リストビュー(親オブジェクト)
- リストビュー (子オブジェクト)
- 詳細ビュー(子オブジェクト)
私は iPhone でこの設定を行って動作していますが、iPad でアプリを縦向きモードで実行すると、マスター リストが常に非表示になります。
最初のリストから 2 番目のリストへのナビゲーション リンクを使用している.isDetailLink(false)
ため、両方のリストは常にマスター列に残ります。iPad の横向きではすべてが期待どおりに機能しますが、縦向きでは詳細ビューが画面いっぱいに表示されます。画面の左側からスワイプしてリストを表示できますが、ユーザーにもっとわかりやすく表示したいと思います。
そうしたいです。戻るボタンを表示または追加するマスター/リスト側を表示します (Apple Notes アプリのようなもの)。iPhone ではデフォルトで戻るボタンが表示されますが、ポートレート モードの iPad ではその場所には何も表示されません。
親リスト
struct ParentList: View {
let firstList = ["Sample data 01", "Sample data 02", "Sample data 03", "Sample data 04", "Sample data 05"]
var body: some View {
NavigationView {
List{
ForEach(firstList, id: \.self) { item in
NavigationLink(destination: ChildList()){
Text(item)
}
.isDetailLink(false)
}
}
}
}
}
子リスト
struct ChildList: View {
let secondList = ["More Sample data 01", "More Sample data 02", "More Sample data 03", "More Sample data 04", "More Sample data 05"]
var body: some View {
List{
ForEach(secondList, id: \.self) { item in
NavigationLink(destination: ChildDetail()){
Text(item)
}
}
}
}
}
子供の詳細
struct ChildDetail: View {
var body: some View {
Text("Child detail view")
}
}
更新: 2019年10月17日現在、これを機能させる方法が見つかりませんでした。.navigationViewStyle(StackNavigationViewStyle())
当面はこれを使用することにしました。興味深いことに、これは外通常の修飾子のようにナビゲーション ビュー内に配置されますが、ナビゲーション タイトル内に配置されません。
ベストアンサー1
ポートレートでは、デフォルトの分割ビューは機能しません。これは将来修正される可能性がありますが、現在のオプションは次のようです:
(a) 最初のリストのナビゲーション ビュー スタイルを変更して、.navigationViewStyle(StackNavigationViewStyle())
ナビゲーションが iPhone と同じように機能するようにし、各ビューをプッシュします。
(b) スタイルをデフォルトのままにして、iPadでは横向きのみをサポートする
(c) UIKitの分割ビューコントローラを実装する