uitableviewcell与textfield传递更改的数据

时间:2015-05-18 10:23:39

标签: ios sqlite uitableview swift

我有一个带标签和文本字段的自定义uitableviewcell现在我想在将文本更改为uitableviewcontroller时从文本字段传递数据。

tableview中填充了一个用fmdb包装的sqlite数据库中的数据,并且我在应用程序中使用的每个db中tableviewcells的数量都不同。它有多少个字段以及它们有什么名称存储在db中,表的填充效果很好。

我设法得到了一个" EditingDidEnd"从单元格中的文本字段到我的视图控制器的事件,该事件用于激活工具栏按钮以保存更改。我是通过cell.fieldData.addTarget(self, action: "SaveButtonOn:", forControlEvents: UIControlEvents.EditingDidEnd)

完成的

中创建单元格

tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)

我现在的问题是我需要从单元格内的文本字段中获取数据。我找到了一些代码和教程,用于将参数传递给via addTarget(),但仅用于按钮,我不知道它是否可用于文本字段。

如果您需要更多信息,请询问,我希望您能解读我需要做的事情。

感谢您的回答 Adarkas

2 个答案:

答案 0 :(得分:1)

在UITextField中使用委托:

    import UIKit
    class MyViewController: UIViewController, UITextFieldDelegate {
      var myTextField: UITextField!

        override func viewDidLoad() {
            super.viewDidLoad()
            myTextField = UITextField(frame: CGRectMake(0, 0, 100, 30))
            myTextField.delegate = self
        }

      func textFieldDidEndEditing(textField: UITextField) {
        // Do stuff here.
      }
    }

如果设置正确,您调用的任何textField都会调用委托方法textFieldDidEndEditing,并且从那里开始您可以使用其内容(textField.text)。

答案 1 :(得分:1)

要从UITableView的特定单元格中的UITextFeild获取值: -

  1. 请务必先为您的UITextFeild设置标记,最好使用indexpath.row设置标记,例如cell.textFld.tag=indexpath.row
  2. 现在编写以下代码以从textfeild中检索值: -
  3. let indexPath = NSIndexPath(forRow:row, inSection:0) //just provide the row number from where you want to fetch the textfeild
    
    let cell : UITableViewCell? = self.tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell?
    
    (cell.contentView.viewWithTag(2) as UITextFeild).text // access the value of textfeild by its tag with this way