iPadOS 13.4 beta 上の Swift Playgrounds で NavigationView


iPadOS13.4ベータ版でDoubleColumnNavigationViewStyleなNavigationviewが少しまともに動くようになったので、そのサンプルコードをメモ。

import SwiftUI

struct ContentView: View {
    static let items = Array(1...30)
    @State var selected: Int? = Self.items.first
    var body: some View {
        NavigationView {
            List(Self.items, id: \.self) { i in
                NavigationLink(destination: Secondary(item: i), tag: i, selection: self.$selected) {
                    Text("Item \(i)")
                }
            }
            .navigationBarTitle("Primary")
        }
    }
}

struct Secondary: View {
    var item: Int
    var body: some View {
        Text("Item \(item)")
            .font(.largeTitle)
            .navigationBarTitle("Secondary")
    }
}

import PlaygroundSupport

let controller = UIHostingController(rootView: ContentView())
PlaygroundPage.current.setLiveView(controller)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
    (controller.children.first as? UISplitViewController)?.preferredDisplayMode = .allVisible
}

asyncAfterを使った手抜きコードだけど参考にはなるかと。