我有兩個不同的視圖,每個視圖都有一個模型來保存它們的資料。我試圖傳遞模型中一個變數的值以用于另一個模型,但第一個模型的值沒有被傳遞。
第一個檔案
struct Number: View {
@StateObject var model = NumberModel()
var body: some View {
NavigationView {
Form {
Section {
TextField("Enter your first number", text: $model.firstNum)
.keyboardType(.decimalPad)
}
Section {
Text("\(model.firstNum)")
}
}
}
}
}
第一個檔案的模型
class NumberModel: ObservableObject {
@Published var firstNum: String
init() {
self.firstNum = ""
}
}
第二個檔案
struct SecondNumber: View {
@StateObject var model = SecondNumberModel()
var body: some View {
NavigationView {
Form {
Section {
TextField("Enter your second number", text: $model.secondNum)
.keyboardType(.decimalPad)
}
Section {
Button {
model.add()
} label: {
Text("Press Me!!!")
}
}
Section {
Text("\(model.total)")
}
}
}
}
}
第二個檔案的模型
class SecondNumberModel: ObservableObject {
@ObservedObject var model = NumberModel()
@Published var secondNum: String
@Published var total: Int
init() {
self.secondNum = ""
self.total = 0
}
func add() {
self.total = Int(self.secondNum self.model.firstNum) ?? 0
}
}
這是內容視圖
struct ContentView: View {
var body: some View {
TabView {
Number()
.tabItem {
Image(systemName: "circle.fill")
Text("First")
}
SecondNumber()
.tabItem {
Image(systemName: "circle.fill")
Text("Second")
}
}
}
}
我正在嘗試從第一個檔案中獲取用戶輸入,然后將該數字發送到第二個檔案中,以便與收集的第二個數字一起添加。但是第一個數字的值不會傳遞到第二個檔案的模型中。感謝任何幫助。謝謝。
uj5u.com熱心網友回復:
如果您有需要共享狀態的兄弟視圖,則該狀態應由父視圖控制。例如,這適用于您的情況:
class NumberModel: ObservableObject {
@Published var firstNum: String = ""
@Published var secondNum: String = ""
@Published var total: Int = 0
func add() {
self.total = Int(self.secondNum self.firstNum) ?? 0
}
}
struct Number: View {
@ObservedObject var model : NumberModel
var body: some View {
NavigationView {
Form {
Section {
TextField("Enter your first number", text: $model.firstNum)
.keyboardType(.decimalPad)
}
Section {
Text("\(model.firstNum)")
}
}
}
}
}
struct SecondNumber: View {
@ObservedObject var model : NumberModel
var body: some View {
NavigationView {
Form {
Section {
TextField("Enter your second number", text: $model.secondNum)
.keyboardType(.decimalPad)
}
Section {
Button {
model.add()
} label: {
Text("Press Me!!!")
}
}
Section {
Text("\(model.total)")
}
}
}
}
}
struct ContentView: View {
@StateObject private var appState = NumberModel()
var body: some View {
TabView {
Number(model: appState)
.tabItem {
Image(systemName: "circle.fill")
Text("First")
}
SecondNumber(model: appState)
.tabItem {
Image(systemName: "circle.fill")
Text("Second")
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/339605.html
