Ios 带有文本字段的uitableviewcell传递更改的数据
我有一个带有标签和文本字段的自定义uitableviewcell,现在我想在将文本字段更改为uitableviewcontroller时将其数据传递给用户 tableview由sqlite数据库中的数据填充,该数据库用fmdb包装,并且我在应用程序中使用的每个db中的TableViewCell数都不同。数据库中存储了多少字段及其名称,表的填充工作正常 我设法从单元格中的文本字段中获取一个“EditingDiEnd”事件到我的视图控制器,该事件用于激活用于保存更改的工具栏按钮。我通过Ios 带有文本字段的uitableviewcell传递更改的数据,ios,sqlite,uitableview,swift,Ios,Sqlite,Uitableview,Swift,我有一个带有标签和文本字段的自定义uitableviewcell,现在我想在将文本字段更改为uitableviewcontroller时将其数据传递给用户 tableview由sqlite数据库中的数据填充,该数据库用fmdb包装,并且我在应用程序中使用的每个db中的TableViewCell数都不同。数据库中存储了多少字段及其名称,表的填充工作正常 我设法从单元格中的文本字段中获取一个“EditingDiEnd”事件到我的视图控制器,该事件用于激活用于保存更改的工具栏按钮。我通过cell.fi
cell.fieldData.addTarget(self,action:“SaveButtonOn:”,forControlEvents:UIControlEvents.EditingDidEnd)完成了这项操作。
关于在计算机中创建单元
tableView(tableView:UITableView,cellForRowAtIndexPath:nsindepath)
我的问题是现在我需要从单元格内的文本字段获取数据。我找到了一些代码和教程,用于将参数传递给via addTarget(),但仅用于按钮,我不知道这是否适用于文本字段
如果你需要更多的信息,尽管问,我希望你能理解我需要做什么
谢谢你的回答
Adarkas在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.
}
}
如果设置正确,您拥有的任何文本字段都会调用委托方法
textfielddendediting
,然后您可以根据需要处理其内容(textField.text
)。要从UITableView的特定单元格中的uitextfield获取值:-
cell.textFld.tag=indexpath.row
哇,谢谢,这比我想象的容易多了。我可以在该函数中以某种方式获取tableviewcell中标签的文本吗?因为我需要它将更改后的文本写入db的右列中。请使用相应的标签来查找它。您所说的“对应”是指例如行号,因为调用委托时我没有获得行号。或者我可以吗?您可以向textFIeld(由委托调用传递)添加一个标记,该标记实现selectedRow indexpath或类似的内容。然后可以确定相应的标签。或者可以使用
.leftView
属性。我把你的答案和@Vizllx的答案结合起来了,所以我已经这么做了,它正是我想要的。再次感谢。嗯,那会更好,但是我如何获得正确的行号,用户在我的TableView中进行了一些编辑?
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