Motherview 中缺少 ObservableObject
ObservableObject is missing in Motherview
我有以下视图文件:
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
上方的视图或任何其他视图也需要这个 object 以及如何让我免于这项工作。我试图将 progress
设为私有,但这不起作用。我在这个视图中定义 class 和所有其他东西,我只需要它本身和 child 的 child。
P.S。是否有更好的可观察 object 方法?例如,当我需要主视图中的值并可以在 child.child.child.view 中更改它时,我必须一直向下传递它。这似乎是一种不必要的工作。
如果您不打算在父视图中使用它,那么只需在本地使用 StateObject
struct RegistrationView: View {
@StateObject var progress = Progress() // << here !!
// ... other code
我有以下视图文件:
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
上方的视图或任何其他视图也需要这个 object 以及如何让我免于这项工作。我试图将 progress
设为私有,但这不起作用。我在这个视图中定义 class 和所有其他东西,我只需要它本身和 child 的 child。
P.S。是否有更好的可观察 object 方法?例如,当我需要主视图中的值并可以在 child.child.child.view 中更改它时,我必须一直向下传递它。这似乎是一种不必要的工作。
如果您不打算在父视图中使用它,那么只需在本地使用 StateObject
struct RegistrationView: View {
@StateObject var progress = Progress() // << here !!
// ... other code