我使用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")
})
}
}
}