【发布时间】:2020-11-08 10:57:33
【问题描述】:
我正在构建一个包含 webView 的列表。
如果视图可见,列表会重新创建视图。
我的问题是-如果有办法不重新创建 webView 并且只加载一次。
我知道我可以使用 ScrollView 来避免娱乐,但我需要它来使用 List。
在 UIKit 中,我将 webView 加载到单元格之外,并将其添加到“cellForRow”函数的正确 indexPath 中。
如何在 SwiftUI 中做类似的事情?
这是我的代码: 列表:
import SwiftUI
struct ListView: View {
let title: String
var body: some View {
List {
LoremText()
LoremText()
LoremText()
LoremText()
LoremText()
LoremText()
LoremText()
LoremText()
LoremText()
WebView(url: URL.init(string: "https://www.google.com")!).frame(height: 300, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
}.navigationBarTitle(title)
}
}
struct ListView_Previews: PreviewProvider {
static var previews: some View {
ListView(title: "ListView")
}
}
网页视图:
import SwiftUI
import WebKit
final class WebView : UIViewRepresentable {
let request: URLRequest
init(url: URL) {
self.request = URLRequest(url: url)
}
func makeUIView(context: Context) -> WKWebView {
let view = WKWebView()
view.scrollView.isScrollEnabled = false
view.load(request)
return view
}
func updateUIView(_ uiView: WKWebView, context: Context) {
}
}
【问题讨论】:
标签: ios swift webview swiftui swiftui-list