Swiftui 无法将值应用于已发布的变量
我很难给发布的变量赋值(weeklyAllowance)。 总共有4个变量,其中3个在按钮操作(文本字段)之外按预期工作 最后一个变量(WeeklyAllowance)必须通过操作按钮从中获取值 提前谢谢Swiftui 无法将值应用于已发布的变量,swiftui,Swiftui,我很难给发布的变量赋值(weeklyAllowance)。 总共有4个变量,其中3个在按钮操作(文本字段)之外按预期工作 最后一个变量(WeeklyAllowance)必须通过操作按钮从中获取值 提前谢谢 class Users: ObservableObject { @Published var firstName = "" @Published var lastName = "" @Published var age = "" @Published var
class Users: ObservableObject {
@Published var firstName = ""
@Published var lastName = ""
@Published var age = ""
@Published var weeklyAllowance = ""
}
import SwiftUI
struct ContentView: View {
@ObservedObject var myDetails = Users()
var body: some View {
NavigationView {
VStack {
TextField("Enter Firstname",text: $myDetails.firstName)
TextField("Enter Lastname",text: $myDetails.lastName)
TextField("Enter Age",text: $myDetails.age)
Text("My name is \(myDetails.firstName)")
Text("My Last name is \(myDetails.lastName)")
Text("My age is \(myDetails.age)")
//Spacer()
VStack {
//Now Update the details
TextField("Name Update",text: $myDetails.lastName)
Text("Lastname update \(myDetails.lastName)")
}
Spacer()
//Link to new view
Button(action: {
//Assign period in the
self.myDetails.objectWillChange.send()
self.myDetails.weeklyAllowance = "Weekly"
}) {
NavigationLink(destination: detailUpdate(UpdateFirstname: $myDetails.firstName, UpdateLastname: $myDetails.lastName, UpdateAge: $myDetails.age,periodWkly: $myDetails.weeklyAllowance)) {
Text("The Link")
}
}
}.padding()
}
}
}
这是一个更新测试
struct detailUpdate: View {
@Binding var UpdateFirstname: String
@Binding var UpdateLastname: String
@Binding var UpdateAge: String
@Binding var periodWkly : String
var body: some View {
VStack {
Text("My First Name Update is \(UpdateFirstname)")
Text("My Last Name Update is \(UpdateLastname)")
Text("My Age Update is \(UpdateAge)")
Text("This is a \(periodWkly) allowance")
}.padding()
}
}
在您的代码中,按钮不起作用,但直接作用于一个链接(将其放置在按钮标签中并不重要——点击激活链接,而不是按钮) 以下是单击按钮时激活链接的ContentView:
struct ContentView: View {
@ObservedObject var myDetails = Users()
@State private var activatedLink = false
var body: some View {
NavigationView {
VStack {
TextField("Enter Firstname",text: $myDetails.firstName)
TextField("Enter Lastname",text: $myDetails.lastName)
TextField("Enter Age",text: $myDetails.age)
Text("My name is \(myDetails.firstName)")
Text("My Last name is \(myDetails.lastName)")
Text("My age is \(myDetails.age)")
//Spacer()
VStack {
//Now Update the details
TextField("Name Update",text: $myDetails.lastName)
Text("Lastname update \(myDetails.lastName)")
}
Spacer()
//Link to new view
Button(action: {
//Assign period in the
self.myDetails.weeklyAllowance = "Weekly"
self.activatedLink = true
}) {
Text("The Link")
}
NavigationLink(destination: detailUpdate(UpdateFirstname: $myDetails.firstName, UpdateLastname: $myDetails.lastName, UpdateAge: $myDetails.age, periodWkly: $myDetails.weeklyAllowance), isActive: $activatedLink) {
EmptyView()
}
}.padding()
}
}
}
在您的代码中,按钮不起作用,但直接作用于一个链接(将其放置在按钮标签中并不重要——点击激活链接,而不是按钮) 以下是单击按钮时激活链接的ContentView:
struct ContentView: View {
@ObservedObject var myDetails = Users()
@State private var activatedLink = false
var body: some View {
NavigationView {
VStack {
TextField("Enter Firstname",text: $myDetails.firstName)
TextField("Enter Lastname",text: $myDetails.lastName)
TextField("Enter Age",text: $myDetails.age)
Text("My name is \(myDetails.firstName)")
Text("My Last name is \(myDetails.lastName)")
Text("My age is \(myDetails.age)")
//Spacer()
VStack {
//Now Update the details
TextField("Name Update",text: $myDetails.lastName)
Text("Lastname update \(myDetails.lastName)")
}
Spacer()
//Link to new view
Button(action: {
//Assign period in the
self.myDetails.weeklyAllowance = "Weekly"
self.activatedLink = true
}) {
Text("The Link")
}
NavigationLink(destination: detailUpdate(UpdateFirstname: $myDetails.firstName, UpdateLastname: $myDetails.lastName, UpdateAge: $myDetails.age, periodWkly: $myDetails.weeklyAllowance), isActive: $activatedLink) {
EmptyView()
}
}.padding()
}
}
}
您可能不必在按钮中嵌入navigationLink。直接用就行了
NavigationLink(destination: detailUpdate(UpdateFirstname: $myDetails.firstName, UpdateLastname: $myDetails.lastName, UpdateAge: $myDetails.age,periodWkly: $myDetails.weeklyAllowance)) {
Text("The Link")
}.onDisappear{
self.myDetails.weeklyAllowance = "Weekly"
}
您可能不必在按钮中嵌入navigationLink。直接用就行了
NavigationLink(destination: detailUpdate(UpdateFirstname: $myDetails.firstName, UpdateLastname: $myDetails.lastName, UpdateAge: $myDetails.age,periodWkly: $myDetails.weeklyAllowance)) {
Text("The Link")
}.onDisappear{
self.myDetails.weeklyAllowance = "Weekly"
}
我希望在我正在编写的浮动按钮菜单中集成代码。您的解决方案为我提供了选择。再次感谢你,我希望在我正在编写的浮动按钮菜单中集成代码。您的解决方案为我提供了选择。再次感谢你