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

我想在 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)
    }
}

https://stackoverflow.com/questions/62504191/

相关文章:

react-native - 如何使用 RNFetchBlob.fetch 和 react-nati

c# - SSIS - 文件存在性检查未正确控制包任务流

php - 模拟 Laravel 缓存助手

heroku - 在 heroku 部署期间无法 cd 进入文件夹

c# - 使用 MVC 从数据主体调用 post API

visual-studio-code - VS Code 中的 Prettier 不断突破界限

mysql - 使用python中的线程在Mysql上同时运行多个查询

reactjs - 使用 enzyme 设置 redux 连接的 react 组件的状态

reactjs - 具有类型支持的可重用 api Hook

.net - PubSub 上的 Http 400 推送到云运行