【发布时间】:2021-02-15 21:25:16
【问题描述】:
我有一个带有可选@ViewBuilder 的通用视图。
我想要两个初始化器,一个负责设置@ViewBuilder,另一个负责设置空默认值。
struct OptionalViewBuilder<Content: View>: View {
let content: (() -> Content)?
init(@ViewBuilder content: @escaping () -> Content) {
self.content = content
}
init() {
self.content = nil
}
var body: some View {
VStack {
Text("Headline")
Divider()
content?()
}
}
}
如果我使用 ViewBuilder 参数初始化视图,它当然可以工作。但是,当我使用空初始化程序时,我收到错误消息:
无法推断通用参数“内容”
struct ContentView: View {
var body: some View {
OptionalViewBuilder {
Text("Text1")
Text("Text2")
}
OptionalViewBuilder() // <-- Generic parameter 'Content' could not be inferred
}
}
我知道 Swift 在运行时需要显式类型,但有没有办法让默认初始化程序正常工作?
【问题讨论】: