NavigationSplitView いろいろ
サンプル
swift
NavigationSplitView {
List {
..
}
.navigationSplitViewColumnWidth(200)
} content: {
List {
..
}
.navigationSplitViewColumnWidth(300)
} detail: {
}
.navigationSplitViewStyle(.prominentDetail) // サイドバーは重なって出る。Detail を触るとサイドバーは隠れる
//.navigationSplitViewStyle(.balanced) // Detail はサイドバーぶん縮む
-
NavigationSplitView
- navigationSplitViewColumnWidth() は iPhone では反応しない模様
-
isDetailLink(bool)
- これで、同じ画面内で遷移するか右側で遷移するか決める?
表示する列の指定
swift
@State private var columnVisibility: NavigationSplitViewVisibility = .doubleColumn
NavigationSplitView(columnVisibility: $columnVisibility) {
...
}
// こんな感じ?
.onChange(of: horizontalSizeClass) {
let isCompact = UIDevice.current.userInterfaceIdiom == .phone && horizontalSizeClass == .compact
columnVisibility = isCompact ? .detailOnly : .automatic
}
content → detail の遷移
iPhone で画面遷移してくれない。なぜか
| 動作 | iPhone | iPad |
|---|---|---|
| sidebar → content の遷移 | o | o |
| content → detail の遷移 | x | o |
→ navigationDestination
swift
NavigationSplitView(columnVisibility: $visibility) {
SmartListView()
} content: {
EventListView()
.navigationDestination(item: $appData.selectedItem) { _ in // ← ★ これが必要
EventDetailView()
}
} detail: {
EventDetailView()
}