如何将 SwiftUI View 作为函数参数传递?
How to pass SwiftUI View as function parameter?
我想将 SwiftUI View
s 显示为 UIViewController
的子视图。这些视图必须实现一个协议。
我有这个:
protocol ContentViewProtocol : View
{
var values: [CGFloat] { get }
}
...
import SwiftUI
struct SearchContentView : ContentViewProtocol
{
var values: [CGFloat] = [0.5, 0.7]
var body: some View
{
VStack
{
...
}
}
}
...
func showContent(view: ContentViewProtocol) <=== ERROR
{
var child = UIHostingController(rootView: view) <=== SAME ERROR
...
}
我收到以下错误:Protocol 'ContentViewProtocol' can only be used as a generic constraint because it has Self or associated type requirements
我在使用普通的 View
作为函数参数类型时遇到同样的错误(因此使用 func showContent(view: View)
)。
我怎样才能避免这种情况?
您可以按照错误提示进行操作,并使用 ContentViewProtocol
作为通用约束。使 showContent
通用:
func showContent<V: ContentViewProtocol>(view: V)
{
let child = UIHostingController(rootView: view)
...
}
我想将 SwiftUI View
s 显示为 UIViewController
的子视图。这些视图必须实现一个协议。
我有这个:
protocol ContentViewProtocol : View
{
var values: [CGFloat] { get }
}
...
import SwiftUI
struct SearchContentView : ContentViewProtocol
{
var values: [CGFloat] = [0.5, 0.7]
var body: some View
{
VStack
{
...
}
}
}
...
func showContent(view: ContentViewProtocol) <=== ERROR
{
var child = UIHostingController(rootView: view) <=== SAME ERROR
...
}
我收到以下错误:Protocol 'ContentViewProtocol' can only be used as a generic constraint because it has Self or associated type requirements
我在使用普通的 View
作为函数参数类型时遇到同样的错误(因此使用 func showContent(view: View)
)。
我怎样才能避免这种情况?
您可以按照错误提示进行操作,并使用 ContentViewProtocol
作为通用约束。使 showContent
通用:
func showContent<V: ContentViewProtocol>(view: V)
{
let child = UIHostingController(rootView: view)
...
}