SwiftUI:作为属性查看

kee*_*n3d 5 swift swiftui

有没有办法拥有View财产?

struct MyObj {
    var myView: View
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,我得到一个编译器错误: Protocol 'View' can only be used as a generic constraint because it has Self or associated type requirements

rob*_*off 11

如果你想要一个可以容纳任何类型的属性View,你有几个选择。

如果它在运行时始终是相同类型的视图,则可以使容器通用:

struct MyObject<Content: View> {
    var myView: Content
}
Run Code Online (Sandbox Code Playgroud)

如果您希望它在运行时保存不同类型的视图,则需要使用AnyView

struct MyObject {
    var myView: AnyView
}
Run Code Online (Sandbox Code Playgroud)

并且您需要在AnyView分配给属性时手动包装您的视图实例。