我如何在提交按钮上发送tableview数据?

问题描述 投票:0回答:2

我有一个 UITableView 有2个部分。

每个部分都有不同的xib单元格(有多个文本字段、单选按钮等)。

用户可以使用键盘输入这些值。

如何使用模型获取提交按钮上各文本字段的值?

以下是我的单元格模型类 详解:

enter image description here

class DataModel {    
    var name: String?
    var gender: String?


    init(name: String?, gender: String?)
    {
        self.name = name
        self.gender = gender 
    }
}

我如何在我的tableview中使用它。

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {



            var cell = tableView.dequeueReusableCell(withIdentifier:"DetailCell") as? DetailCell
                     if cell == nil{
                         let arrNib:Array = Bundle.main.loadNibNamed("DetailCell",owner: self, options: nil)!
                         cell = arrNib.first as? DetailCell
                     }
                 let model: DataModel

                   model = DataModel [indexPath.row]

                   //displaying values
                   cell?.name_lbl.text = model.name
                   cell?.gender_lbl.text = model.gender



              return cell!
}
ios swift uitableview model
2个回答
1
投票

首先,你的name_lbl和gender_lbl应该是UITextField,而不是UILabel.你必须为name_lbl和gender_lbl添加目标。

cell?.name_lbl.text = model.name
cell?.name_lbl.tag = indexPath.section
cell?.name_lbl.addTarget(self, action: #selector(textFieldNameDidChange(_:)), for: UIControl.Event.editingChanged)
cell?.gender_lbl.text = model.gender 
cell?.name_lbl.tag = indexPath.section
cell?.name_lbl.addTarget(self, action: #selector(textFieldGenderDidChange(_:)), for: UIControl.Event.editingChanged)

你必须为name_lbl和gender_lbl添加目标,并添加方法textFieldNameDidChange和textFieldGenderDidChange为。

@objc func textFieldGenderDidChange(sender: UITextField) { 
     var model = DataModel[sender.tag]
     model.gender = sender.text
}

你应该为 "name "添加同样的方法。


1
投票

你可以给textfield加上标签,然后使用UITextFieldDelegate来实现这个功能,比如。

func textFieldDidEndEditing(_ textField: UITextField) {
    if textField.tag == 0 {
       model.name = textField.text ?? ""
    }
}

在您的提交按钮上,您可以访问模型值,如

 @IBAction func submitButtonTapped(_ sender: Any) {
    self.view.endEditing(true)
    let name = model.name
 }

1
投票

为此,你需要将标签设置为行单元格中的文本字段,在shouldChageCharacter委托方法中,将文本设置为带有各自indexpath的数据数组,并创建uitableviewcell对象,将文本设置为相应的标签。在shouldChageCharacter delegate方法中,将文本设置为带有各自indexpath的数据数组,并创建uitableviewcell对象,将文本设置为各自的标签。在上面的答案中,如果你滚动表格,那么TableCell会相互混合。

© www.soinside.com 2019 - 2024. All rights reserved.