【发布时间】:2020-07-04 20:04:28
【问题描述】:
抱歉标题和长度让我难以总结
我有一类@ObserableObject @Published 数据,我想更改并使用通过 NavigationLink 访问的第二页上的新数据
class Data: ObservableObject {
@Published var number = 5
var correctNumber: Int {
number + 1
}
}
然后我有一个选择器来选择/更改数字
Picker("What times tables do you want to test your knowledge on?", selection: $data.number) {
ForEach(0 ..< data.numberRange.count) {
Text("\(self.data.numberRange[$0])")
}
}
当我让文本在主屏幕上显示更正的数字并在选择器更改时更改/更新时,这将按预期工作
Text ("Number = \(data.correctNumber)")
然后我使用 NavigationLink 转到第二个屏幕
NavigationLink(destination: QuestionView()) {
Text("Start")
}
在第二个屏幕上,我设置了@ObservedObject 并再次显示文本。
struct QuestionView: View {
@ObservedObject var data = Data()
var body: some View {
Text("Number = \(self.data.correctNumber)")
}
当按下开始时,它只显示数字为 5 + 1,而不是使用选择器更改为的数字。
我试过了;
- 不使用自我。但没有明显区别
- 交换到绑定 $ 并遇到以下问题;无法分配 to property: 'correctNumber' 是一个 get-only 属性和 Instance 方法 'appendInterpolation' 要求 'Binding' 符合 '_FormatSpecifiable'
- 将 @Published 添加到 correctNumber 但我无法将其添加到 计算状态
现在我没有想法了,任何人都可以帮助一个菜鸟,拜托
PS 如果术语有误,请见谅,欢迎指正,以便下次学习
【问题讨论】:
标签: class swiftui observable swiftui-navigationlink observedobject