0

我正在尝试制作一个简单地打开 URL 的 ios 应用程序。所以基本上是一个 webview 应用程序。我正在使用 XCode 12.4,这就是我所做的:

  1. 创建新项目->iOS 应用程序->(见下图)
  2. 创建一个新文件:ViewController.swift-->
import WebKit
class WebViewController: UIViewController, WKNavigationDelegate {

    var webView: WKWebView!
    
    override func loadView() {
        webView = WKWebView()
        webView.navigationDelegate = self
        view = webView
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        let url = URL(string: "https://developer.apple.com")!
        webView.load(URLRequest(url: url))
    }
}
  1. 构建并运行。

问题是应用程序继续在“Hello World”上打开,我想原因是MyappApp.swift文件正在调用ContentView而不是ViewController

import SwiftUI

@main
struct myappApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

我怎样才能解决这个问题?

免责声明:这是我的第一个 iOS 应用程序,我对 iOS 开发几乎一无所知。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

1 回答 1

0

你非常接近......将你包裹WebViewController起来UIViewControllerRepresentable以使其与 SwiftUI 兼容

import SwiftUI
struct WebView_UI: UIViewControllerRepresentable {
    func makeUIViewController(context: Context) -> some UIViewController {
        let vc = WebViewController()
        return vc
    }
    func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {
        
    }
}

然后在 SwiftUI 中引用您的新UIViewControllerRepresentableSwiftUI struct。例如...

struct myappApp: App {
    var body: some Scene {
        WindowGroup {
            WebView_UI()
        }
    }
}

或者...

struct ContentView: View {
    var body: some View {
        VStack{
            Text("Hello World!").padding()
            WebView_UI()
        }
    }
}
于 2021-03-14T17:29:31.970 回答