我有以下视图文件:
import SwiftUI
class Progress: ObservableObject {
@Published var index = 0
}
struct RegistrationView: View {
@ObservedObject var progress: Progress
var body: some View {
TabView(selection: $progress.index) {
setUsernameView(progress: self.progress).tabItem{}.tag(0)
setMasterPasswordView().tabItem{}.tag(1)
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .always))
}
}
当我完成后,我setUserNameView()
想将索引更新为 1,以便它切换到 setMasterPasswordView。我传递progress
给视图,然后在another view
其中更新值。
现在 xcode 抱怨:Missing argument for parameter 'progress' in call
调用在contentView()
.
import SwiftUI
struct ContentView: View {
var body: some View {
RegistrationView()
}
}
我的问题是,为什么上面的视图或任何其他视图RegistrationView
也需要这个对象,以及如何让我免于这项工作。我试图将其设为progress
私有,但这不起作用。我在这个视图中定义类和所有其他东西,我只需要它自己和孩子的孩子。
PS对于可观察的物体有更好的方法吗?例如,当我需要主视图中的值并且可以在 child.child.child.view 中更改它时,我必须一直向下传递它。这似乎是一种不必要的工作。