iOS 中最简单的 webview 应用程序 - 未能 运行
Simplest webview app in iOS - fail to run
我正在尝试制作一个 ios 应用程序,只需打开 URL。所以基本上是一个 webview 应用程序。我正在使用 XCode 12.4,这就是我所做的:
- 创建新项目->iOS应用程序-->(见下图)
- 创建一个新文件:
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))
}
}
- 构建并 运行.
问题是应用程序继续在“Hello World”上打开,我想原因是 MyappApp.swift
文件正在调用 ContentView
而不是 ViewController
import SwiftUI
@main
struct myappApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
我该如何解决这个问题?
免责声明:这是我的第一个 iOS 应用程序,我对 iOS 开发者知之甚少。
您非常接近...将您的 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 struct
中引用您的新 SwiftUI UIViewControllerRepresentable
。例如...
struct myappApp: App {
var body: some Scene {
WindowGroup {
WebView_UI()
}
}
}
或者...
struct ContentView: View {
var body: some View {
VStack{
Text("Hello World!").padding()
WebView_UI()
}
}
}
我正在尝试制作一个 ios 应用程序,只需打开 URL。所以基本上是一个 webview 应用程序。我正在使用 XCode 12.4,这就是我所做的:
- 创建新项目->iOS应用程序-->(见下图)
- 创建一个新文件:
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))
}
}
- 构建并 运行.
问题是应用程序继续在“Hello World”上打开,我想原因是 MyappApp.swift
文件正在调用 ContentView
而不是 ViewController
import SwiftUI
@main
struct myappApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
我该如何解决这个问题?
免责声明:这是我的第一个 iOS 应用程序,我对 iOS 开发者知之甚少。
您非常接近...将您的 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 struct
中引用您的新 SwiftUI UIViewControllerRepresentable
。例如...
struct myappApp: App {
var body: some Scene {
WindowGroup {
WebView_UI()
}
}
}
或者...
struct ContentView: View {
var body: some View {
VStack{
Text("Hello World!").padding()
WebView_UI()
}
}
}