This commit is contained in:
Ivan Vorobei
2019-06-26 22:12:35 +03:00
parent 2477f5d038
commit 48001a8e9a
1363 changed files with 6 additions and 3 deletions

View File

@@ -0,0 +1,22 @@
import SwiftUI
public struct SplitView<Master: View, Detail: View>: View {
public var master: Master
public var detail: Detail
@State public var preferredDisplayMode: UISplitViewController.DisplayMode
public var body: some View {
let controllers = [UIHostingController(rootView: master), UIHostingController(rootView: detail)]
return SplitViewController(controllers: controllers, preferredDisplayMode: $preferredDisplayMode)
}
}
public extension SplitView {
init(master: Master, detail: Detail) {
self.init(master: master, detail: detail, preferredDisplayMode: .automatic)
}
func preferredDisplayMode(_ preferredDisplayMode: UISplitViewController.DisplayMode) -> Self {
return SplitView(master: master, detail: detail, preferredDisplayMode: preferredDisplayMode)
}
}

View File

@@ -0,0 +1,18 @@
import SwiftUI
public struct SplitViewController: UIViewControllerRepresentable {
public var controllers: [UIViewController]
@Binding public var preferredDisplayMode: UISplitViewController.DisplayMode
public func makeUIViewController(context: UIViewControllerRepresentableContext<SplitViewController>) -> UISplitViewController {
let splitViewController = UISplitViewController()
splitViewController.preferredDisplayMode = preferredDisplayMode
splitViewController.viewControllers = controllers
return splitViewController
}
public func updateUIViewController(_ uiViewController: UISplitViewController, context: UIViewControllerRepresentableContext<SplitViewController>) {
uiViewController.preferredDisplayMode = preferredDisplayMode
uiViewController.viewControllers = controllers
}
}