将textField值保存到单元格textLabel(名称)

我打算做这样的事情http://sofzh.miximages.com/ios/jAGsk.png

因此,如果用户输入点 – 它将保存点到用户的名字。 怎么做? 我在tableViewCell中使用函数粘贴textField。 这是tableViewCell文件中的代码

@IBOutlet weak var inputScore: UITextField! public func configure(text: Int?, placeholder: String) { inputScore.text = String(text!) inputScore.placeholder = placeholder inputScore.accessibilityValue = String(text!) inputScore.accessibilityLabel = placeholder } 

这是来自VC文件的代码

 public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "InputScore") as! InputScoreTableViewCell cell.textLabel?.text = usersIn[indexPath.row] cell.configure(text: 100, placeholder: "Score") return cell } public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return usersIn.count } 

那么如何将其保存为用户名?

使用DidSelectRowAtIndexPath方法在textField中获取单元格textLable文本。

以下示例代码:

 import UIKit class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { @IBOutlet var btnOK: UIButton! @IBOutlet var txtValue: UITextField! @IBOutlet var tblData: UITableView! let arrResult = NSMutableArray() override func viewDidLoad() { super.viewDidLoad() tblData.dataSource = self tblData.delegate = self btnOK.tag = 57775 btnOK.addTarget(self, action: #selector(applyEdit(sender:)), for: .touchUpInside) } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return arrResult.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = UITableViewCell(style: .default, reuseIdentifier: "cell") cell.textLabel?.text = arrResult[indexPath.row] as? String ?? "" return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { btnOK.tag = indexPath.row let cell: UITableViewCell = tableView.cellForRow(at: indexPath)! txtValue.text = cell.textLabel?.text setTitle() } func setTitle() { if btnOK.tag == 57775 { btnOK.setTitle("Add", for: .normal) }else{ btnOK.setTitle("Update", for: .normal) } } func applyEdit(sender: UIButton) { if sender.tag == 57775 { arrResult.add(txtValue.text ?? "") }else{ arrResult.removeObject(at: sender.tag) arrResult.insert(txtValue.text ?? "", at: sender.tag) sender.tag = 57775 setTitle() } txtValue.text = "" tblData.reloadData() } } 

输出:

在此处输入图像描述

您必须为用户创建数据模型:

 class User: NSObject { var points = 0 } 

然后在视图控制器中创建一组用户:

 var users = [User]() 

这样,你可以做这样的事情

 var user = users[indexPath.row] user.points = 100 print(user.points) // 100 

然后,您可以在表格视图中显示用户的点数。 您还可以将tag分配给等于indexPath.row文本字段,以便您可以轻松使用它们。

在使用@Cesare提供的用户模型之前,我们需要修改cellForRowAtIndexPath方法和您的单元格的实现,为数据更改事件添加闭包,并使用它

 @IBOutlet weak var inputScore: UITextField! fileprivate var fnDataWasUpdated : (Int?) -> Void = {_ in} //closure for data change notification public func configure(text: Int?, placeholder: String,_ fnListener: @escaping (Int?) -> Void) { inputScore.text = String(text!) inputScore.placeholder = placeholder inputScore.accessibilityValue = String(text!) inputScore.accessibilityLabel = placeholder //added delegate implementation for UITextField inputScore.delegate = self self.fnDataWasUpdated = fnListener } 

还需要您的单元格采用UITextFieldDelegate协议

 extension InputScoreTableViewCell : UITextFieldDelegate { func textFieldDidEndEditing(_ textField: UITextField) { if let intValue = Int(textField.text) { self.fnDataWasUpdated(intValue) } } } 

最后,我们在您的单元格中使用新的闭包

 public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "InputScore") as! InputScoreTableViewCell let currUser = self.users[indexPath.row] cell.configure(text: currUser.points, placeholder: "Score",{ (newIntValue) in currUser.points = newIntValue }) return cell } 

这段代码没有经过测试,但我在几个项目中一直使用主要概念,所以如果您遇到任何问题,请告诉我

我希望这可以帮助你