mirror of
https://github.com/ivanvorobei/SwiftUI.git
synced 2026-03-29 21:52:10 +02:00
Update
This commit is contained in:
22
Other Projects/SplitView/Sources/SplitView/SplitView.swift
Executable file
22
Other Projects/SplitView/Sources/SplitView/SplitView.swift
Executable 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)
|
||||
}
|
||||
}
|
||||
18
Other Projects/SplitView/Sources/SplitView/SplitViewController.swift
Executable file
18
Other Projects/SplitView/Sources/SplitView/SplitViewController.swift
Executable 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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user