簡體   English   中英

如何獲取列表中的 textField 值 swiftui

[英]How to get textField values in the list swiftui

我以這種方式使用列表,我想在單擊提交按鈕時發送所有TextField值。

我的問題是我無法在列表中獲取 TextField 值

我在項目中也使用了mvvm架構

我在項目中的代碼:

我的型號:

import Foundation
import SwiftUI

struct MyModel : Identifiable {
    var id:Int64
    var title:String
   @State var value:String
}

我的視圖模型:

import Foundation
import SwiftUI


class MyViewModel: ObservableObject {
    @Published var items:[MyModel] = []

    init() {
        populateItem()
    }

    func populateItem(){
        self.items.append(MyModel(id: 0, title: "title #1", value: ""))
        self.items.append(MyModel(id: 1, title: "title #2", value: ""))
        self.items.append(MyModel(id: 2, title: "title #3", value: ""))
        self.items.append(MyModel(id: 3, title: "title #4", value: ""))
        self.items.append(MyModel(id: 4, title: "title #5", value: ""))
        self.items.append(MyModel(id: 5, title: "title #6", value: ""))
    }

}

我的看法 :

import SwiftUI

struct ContentView: View {

    @ObservedObject var myViewModel = MyViewModel()

    var body: some View {
        VStack {

            List {
                ForEach(self.myViewModel.items) {item in
                    HStack {
                        Text(item.title)
                        TextField("value", text: item.$value)
                    }
                }
            }

            Button(action: {
                print(self.myViewModel.items[0].value)
            }){
                Text("Submit")
            }.padding()
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

首先從模型的value屬性中刪除@State屬性包裝器。 並使用下一個代碼更新您的 ForEach:

ForEach(self.myViewModel.items.indices, id:\.self) { index in
    HStack {
        Text(self.myViewModel.items[index].title)
        TextField("value", text: Binding(
            get: {
                return self.myViewModel.items[index].value
        },
            set: { newValue in
                return self.myViewModel.items[index].value = newValue
        }))
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM