【问题标题】:Swift UITableview edit different values in textboxesSwift UITableview 在文本框中编辑不同的值
【发布时间】:2020-02-17 13:59:25
【问题描述】:
如果已经有人问过这个问题,但我找不到我要找的东西,我提前道歉。因此,如果您能指出我正确的方向,那将有所帮助。
所以我有一个UIViewController,它有一个UITableview,有4 个不同的单元格。每个都有不同的值,每个单元格将有 1 个UITextField 和 1 个UILabel。我有一个UIBarButtonItem,可以让我编辑或保存数据。最终将新数据写入数据库。我的问题是我不确定如何编辑UITextField 中的数据。我不知道从哪里开始。下面是我上面描述的屏幕截图。左边是UILabel,右边是UITextfield。这些值都将由另一个函数验证,以确保它们是正确的。我只想根据需要更改字段的值,然后保存数据。不确定如何实际提取 cellForRowAt 之外的值。其他一切正常,一旦我解决了这个问题,我就可以让一切正常工作。
【问题讨论】:
标签:
ios
swift
uitableview
uitextfield
edit
【解决方案1】:
可以使用 Cell 的委托到您的 VC(其中包含 TableView 的那个)来完成。
当文本字段值更改时,调用您的委托并传递单元格,也许还有文本字段内的字符串值。在您的父 VC 中,您获取单元格并轻松找到它的索引并更新您的模型。
在您的单元格自定义类中
protocol ProtocolName{
func FunctionName(c:UITableViewCell,val:String)
}
...
var delegate:ProtocolName!
@IBAction func textFieldDidBeginEditing(textField: UITextField) {
delegate.FunctionName(self,textfield.text)
}
在你的父 VC 中,确保你符合 yo ProtocolName,然后
func FunctionName(c:UITableViewCell,val:String){
if let index = tableview.indexPath(for cell: c){
// Update your model based on the index and val which is whatever is in the textfield of that cell. You can also reload data here
}
}
【解决方案2】:
您可以将所有单元格存储在一个数组中。当您想访问UITextField 的数据时,您可以从该数组中获取所有文本字段。您可以给UITextField 提供标签,例如textField.tag = indexPath.row。这样您就可以为每个UITextField 添加不同的条件。