如何从子视图更新单独类中的属性,并让父视图更新



我使用Xcode 12和SwiftUI代码和生命周期

我找不到一个答案当我在谷歌搜索或者但我新的代码,我可能不知道什么条件搜索。这也是我的第一个帖子,我希望我做得对。

我试着创造一个我想要完成的事情的简化版本。

基本上我们的目标是让ContentView中按钮上方的文本从"Title";Hello"当我按下按钮时。我知道我可以通过将title变量放在ContentView结构体中更简单地实现这一点,但出于我的目的,我真的需要将它放在一个单独的类中。

提前感谢。

class Data: ObservableObject {
@Published var title = "Title"
}
struct ContentView: View {
@StateObject var data = Data()
var body: some View {
VStack {
Text(data.title)
.padding()
ButtonView(data: $data.title) // I'm not sure if this line alone is the problem or if my thinking and code structuring is just all wrong.
}
}
}
struct ButtonView: View {
@Binding var data: Data
var body: some View {

VStack {
Button(action: {
data.title = "Hello"
}, label: {
Text("Button")
})
}
}
}

不要使用Data,因为它已经是一个标准的swift名称。然后试试下面的命令:

class Datax: ObservableObject {
@Published var title = "Title"
}
struct ContentView: View {
@StateObject var data = Datax()
var body: some View {
VStack {
Text(data.title).padding()
ButtonView(data: data)  // <-- here
}
}
}
struct ButtonView: View {
@ObservedObject var data: Datax  // <-- here

var body: some View {
VStack {
Button(action: {
data.title = "Hello"
}, label: {
Text("Button")
})
}
}
}

相关内容

  • 没有找到相关文章

最新更新