God*_*ike 4 protocols ios swift swiftui
我想在协议中使用视图。
protocol Test {
var view: View { get }
}
Run Code Online (Sandbox Code Playgroud)
协议“视图”只能用作通用约束,因为它具有 Self 或关联类型要求
我只想和我的 ViewController 做同样的事情。任何的想法?
protocol Test {
var viewController: UIViewController { get }
}
Run Code Online (Sandbox Code Playgroud)
如果我使用关联类型,则会在其他协议中收到错误消息。
protocol Test2: Test {
//STUB
}
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?谢谢 :)
小智 5
SwiftUI.View是一个协议,因为它使用Self(例如,在它的body 属性中),你不能直接将属性类型声明为View.
您可以定义关联类型Test并将该类型限制为 a View:
protocol Test {
associatedtype T: View
var view: T { get }
}
Run Code Online (Sandbox Code Playgroud)
除非将协议声明为关联类型,否则不能直接使用该协议,但可以使用擦除的类型AnyView来代替:
protocol Test {
var view: AnyView { get }
}
Run Code Online (Sandbox Code Playgroud)
创建AnyView实例可能会在代码中添加一些噪音,但创建实例很容易。
| 归档时间: |
|
| 查看次数: |
1778 次 |
| 最近记录: |