在iOS开发中,使用SwiftUI在Webview中调用带两个参数的JS函数可以通过以下步骤实现:
WKWebView
来实现Webview功能。import SwiftUI
import WebKit
struct WebView: UIViewRepresentable {
let url: URL
func makeUIView(context: Context) -> WKWebView {
let webView = WKWebView()
webView.load(URLRequest(url: url))
return webView
}
func updateUIView(_ uiView: WKWebView, context: Context) {
}
}
@State
变量来存储从JS函数返回的结果。struct ContentView: View {
@State private var result: String = ""
var body: some View {
VStack {
WebView(url: URL(string: "https://example.com")!)
.frame(height: 300)
Text("Result: \(result)")
.padding()
}
}
}
evaluateJavaScript
方法调用JS函数,并将结果存储在@State
变量中。struct WebView: UIViewRepresentable {
let url: URL
func makeUIView(context: Context) -> WKWebView {
let webView = WKWebView()
webView.load(URLRequest(url: url))
webView.navigationDelegate = context.coordinator
return webView
}
func updateUIView(_ uiView: WKWebView, context: Context) {
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, WKNavigationDelegate {
let parent: WebView
init(_ parent: WebView) {
self.parent = parent
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("yourJSFunction('param1', 'param2')") { (result, error) in
if let result = result as? String {
parent.result = result
}
}
}
}
}
在上述代码中,yourJSFunction
是你要调用的JS函数,param1
和param2
是传递给JS函数的两个参数。调用evaluateJavaScript
方法后,可以通过闭包获取JS函数的返回结果,并将其存储在@State
变量result
中。
这样,当Webview加载完成后,JS函数会被调用,并将结果显示在SwiftUI视图中。
请注意,以上代码仅为示例,实际使用时需要根据具体需求进行适当修改。
推荐的腾讯云相关产品:腾讯云移动开发平台(https://cloud.tencent.com/product/mwp)
领取专属 10元无门槛券
手把手带您无忧上云