swift - Xcode 预览不适用于通用 View

标签 swift xcode swiftui

我想在 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/

相关文章:

swift - 铸型及检验查询

objective-c - va_list、CVaListPointer、AnyObject ...、CVarArgType 的区别和用例是什么?

iphone - DatePicker 和 NSDate 崩溃

admob - SwiftUI 中的 Google AdMob 横幅事件集成

swiftui - iOS 14.0后SwiftUI中RealmSwift.App和SwiftUI.App冲突如何解决?

ios - 在 didSet 中将 UITextField 占位符设为私有(private)

Swift 在 localization.strings 中使用 unicode 字符

ios - NSMutableArray 行为怪异

xcode - 是否可以复制 xcode 派生数据缓存?

swiftui - 不能在不可变值 : 'self' is immutable in SwiftUI 上使用可变成员