【问题标题】:Why can I not pass variables to a SwiftUI view in preview?为什么我不能在预览中将变量传递给 SwiftUI 视图?
【发布时间】:2020-07-15 04:06:26
【问题描述】:

这是我第一次使用 SwiftUI 构建应用程序,当我尝试创建界面时,Xcode 给了我奇怪的错误。

我最终想要的是一个迭代骰子数组的列表(Die 是我为定义特定骰子而创建的结构,例如 d6 或 d20)。

目前,我只是在测试界面。出于在 Xcode 中测试/预览的目的,我希望能够使用一些测试数据,但我不太清楚如何将该变量传递到主视图中。我收到“未使用初始化程序的结果”的警告和“函数声明了一个不透明的返回类型,但在其主体中没有用于推断基础类型的返回语句”的错误。

我可能做了一些愚蠢的事情。谁能帮忙说明一下?

struct DiceListView: View {
    var diceToList: [Die]

    var body: some View {
        Text("testing")
    }

    init(dice: [Die]) {
        diceToList = dice
    }
}

struct DiceListView_Previews: PreviewProvider {
    static var previews: some View {

        // setup test dice data (d4, d5, d6)
        let testDice: [Die] = [Die(sides: 4), Die(sides: 5), Die()]


        DiceListView(dice: testDice)
    }
}

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

    在这种情况下它不能自动检测返回类型,所以这里有可能的修复

    static var previews: some View {
    
        // setup test dice data (d4, d5, d6)
        let testDice: [Die] = [Die(sides: 4), Die(sides: 5), Die()]
        return DiceListView(dice: testDice)
    }
    

    static var previews: some View {
    
        // setup test dice data (d4, d5, d6)
        DiceListView(dice: [Die(sides: 4), Die(sides: 5), Die()])
    }
    

    【讨论】:

    • 第一个解决方案非常完美,帮助我了解我做错了什么!谢谢!
    猜你喜欢
    • 2021-09-25
    • 2019-03-04
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    相关资源
    最近更新 更多