SwiftUI绑定错误:为什么这不起作用?

时间:2019-09-06 17:30:19

标签: swiftui

我在以下SwiftUI代码片段中设置Binding时遇到问题。我正在xCode Beta 7((11M392r)。

在下面的代码段中,我正在创建2个步进视图。

如果我将$student.totalMarks传递给Stepper,它将起作用并创建正确的绑定。

但是,如果我尝试访问$student.marks.score1,那将不起作用,并显示以下编译错误:

Generic parameter 'Subject' could not be inferred

是否有一种方法可以将单个字段从嵌套属性传递到绑定中?

struct Marks {
    public let score1: Int
    public let score2: Int
    public let score3: Int
}

class Student: ObservableObject {
    @Published var totalMarks: Int = 145
    @Published var marks = Marks(score1: 67, score2: 56, score3: 64)
}

struct ContentView: View {
    @ObservedObject var student = Student()

    var body: some View {
        return VStack {
            Stepper("Total Score: \(student.totalMarks)", value: $student.totalMarks)
            Stepper("Score 1: \(student.marks.score1)", value: $student.marks.score1)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

1 个答案:

答案 0 :(得分:1)

容易。 ;-)不要将常量用于步进器的值绑定。而是使您的分数变量(在结构var中使用let而不是Marks)。