Я пытаюсь запустить второй вид с помощью WKWebview, нажав кнопку. Это тоже работает. Я получаю обратный вызов в функции userContentController. Как можно запустить новый вид в приложении из этой функции.
struct MyWebView: UIViewRepresentable {
var webPageURL = "https://google.de"
func updateUIView(_ uiView: WKWebView, context: Context) {
let myURL = URL(string:webPageURL)
let myRequest = URLRequest(url: myURL!)
uiView.load(myRequest)
}
func makeUIView(context: Context) -> WKWebView {
let webConfiguration = WKWebViewConfiguration()
let wkcontentController = WKUserContentController()
wkcontentController.add(context.coordinator, name: "doStuffMessageHandler")
webConfiguration.userContentController = wkcontentController
let webView = WKWebView(frame: .zero,configuration: webConfiguration)
context.coordinator.parent = webView // inject as weak
return webView
}
func makeCoordinator() -> ContentController {
ContentController() // let handler be a coordinator
}
}
class ContentController: NSObject, WKScriptMessageHandler {
weak var parent: WKWebView? // weak to avoid reference cycling
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)
{
if message.name == "doStuffMessageHandler"
{
print(message.body)
}
}
}
struct MyWebView_Previews: PreviewProvider {
static var previews: some View {
MyWebView()
}
}