英文:
Value of type 'some UIView' has no member 'scrollView'
问题
我正在尝试在我的Swift UI应用程序中加载YouTube视频。
我正在遵循的教程编写了以下代码:
uiView.scrollView.isScrollEnabled = false
uiView.load(URLRequest(url: YouTubeURL))
在我的情况下,我收到以下错误消息:
类型'some UIView'没有成员'scrollView'
如果有帮助,这是整个结构:
struct Video: UIViewRepresentable {
let videoId: String?
func makeUIView(context: Context) -> some UIView {
return WKWebView()
}
func updateUIView(_ uiView: UIViewType, context: Context) {
guard let ytId = videoId else { return }
let ytUrl = URL(string: baseUrl + ytId)
uiView.scrollView
uiView.load
}
}
有什么办法修复这个问题吗?
英文:
I'm trying to load a youtube video in my app in swift ui
Tutorial I'm following writes the following code
uiView.scrollView.isScrollEnabled = false
uiView. load(URLRequest(url: YouTubeURL))
In my case, I get the following error
Value of type 'some UIView' has no member 'scrollView'
That's the whole struct if it helps
struct Video: UIViewRepresentable {
let videoId: String?
func makeUIView(context: Context) -> some UIView {
return WKWebView()
}
func updateUIView(_ uiView: UIViewType, context: Context) {
guard let ytId = videoId else { return }
let ytUrl = URL(string: baseUrl + ytId)
uiView.scrollView
uiView.load
}
}
Any idea how to fix that?
答案1
得分: 1
你可能根据实现 UIViewRepresentable 协议来接受了这一行的自动完成:
func makeUIView(context: Context) -> some UIView {
这意味着结果是“某种类型的 UIView,但调用者不知道具体是哪种类型。” 作为这个协议的一部分,它还将 UIViewType 设置为 some UIView
。然后你不能在其上使用 WKWebView 特定的属性。你很可能本意是要写成:
func makeUIView(context: Context) -> WKWebView {
你可能还想要更改这一行,明确使用 WKWebView,以便更加清晰:
func updateUIView(_ uiView: WKWebView, context: Context) {
英文:
You probably accepted the auto-completion for this line based on implementing the UIViewRepresentable protocol:
func makeUIView(context: Context) -> some UIView {
This says that the result is "some kind of UIView, but the caller doesn't know what kind." As part of this protocol, it also sets UIViewType to be some UIView
. You can't then use WKWebView-specific properties on that. What you very likely meant to write here was:
func makeUIView(context: Context) -> WKWebView {
You likely also want to change this line to use WKWebView explicitly, in order to be a bit clearer:
func updateUIView(_ uiView: WKWebView, context: Context) {
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论