我想在 SwiftUI View 中使用通用 subview 。
struct UserChoiceView<DecisionView: View>: View {
let subview: DecisionView
var body: some View {
subview
.padding()
.offset(x: 10)
}
}
struct LikeDislikeView_Previews: PreviewProvider {
static var previews: some View {
UserChoiceView(subview: RoundedRectangle(cornerRadius: 10)
.fill(Color.red.opacity(0.9)))
}
}
上面的代码工作正常,但 Xcode 无法生成预览。 我收到此错误:
reference to generic type 'UserChoiceView' requires arguments in <...>
我想我可以通过使用 AnyView 类型删除来解决这个问题,但也许还有其他解决方法。
最佳答案
您需要在预览中明确定义 View 。
struct UserChoiceView<DecisionView: View>: View {
let subview: DecisionView
var body: some View {
/// ...
}
}
struct LikeDislikeView_Previews: PreviewProvider {
static var decisionView: View {
// return SomeDecisionView()
}
static var previews: some View {
UserChoiceView<Self.decisionView>(subview: Self.decisionView)
}
}
关于swift - Xcode 预览不适用于通用 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62504191/