38 行
1.3 KiB
Swift
38 行
1.3 KiB
Swift
|
|
import SwiftUI
|
||
|
|
|
||
|
|
public struct XWebViewPage: View {
|
||
|
|
private let config: XWebViewConfig
|
||
|
|
|
||
|
|
public init(config: XWebViewConfig? = nil) {
|
||
|
|
self.config = config ?? XWebViewBridge.shared.currentConfig()
|
||
|
|
}
|
||
|
|
|
||
|
|
public var body: some View {
|
||
|
|
NavigationStack {
|
||
|
|
Group {
|
||
|
|
#if canImport(UIKit)
|
||
|
|
XWebViewView(config: config)
|
||
|
|
.navigationTitle(config.title.isEmpty ? "WebView" : config.title)
|
||
|
|
.navigationBarTitleDisplayMode(.inline)
|
||
|
|
.toolbar {
|
||
|
|
if !config.hideToolbar {
|
||
|
|
ToolbarItem(placement: .topBarLeading) {
|
||
|
|
Button {
|
||
|
|
if let controller = XWebViewBridge.shared.currentController(), controller.canGoBack() {
|
||
|
|
controller.goBack()
|
||
|
|
}
|
||
|
|
} label: {
|
||
|
|
Image(systemName: "chevron.left")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#else
|
||
|
|
XWebViewView(config: config)
|
||
|
|
.navigationTitle(config.title.isEmpty ? "WebView" : config.title)
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|